Picture Control + CStatic
-
Hi,
ich hab ein Picture Control erstellt und darüber eine CStatic Textfeld. Dieses Textfeld ändert häufig seinen Wert und der Hintergrund ist Transparent.
Wie kann ich aus meiner CStatic abgeleiteten Klasse es erzwingen, dass das Picture Control ebenfalls neu gezeichnet wird, da ich ansonsten immer noch den vorherigen Wert des Textfeldes dastehen habe und man irgendwann gar nichts mehr lesen kann
Oder geht es einfacher, indem man zuerst den Background im CStatic z.B. schwarz einfärbt und danach im CtlColor den Backgroundmode wieder auf Transparent schaltet?
Gruß
das Karlchen
-
ich würde einfach das PictureCtrl weg lassen und erst den Hintergrund also das Bild Blitten und dann den Text drauf. Falls es Flackern sollte, wenn du den Text oft änderst, mal nach Doublebuffering oder MemDC schaun. Also auf gut deutsch alles selbst in dem Static machen.
-
CTecS schrieb:
ich würde einfach das PictureCtrl weg lassen und erst den Hintergrund also das Bild Blitten und dann den Text drauf. Falls es Flackern sollte, wenn du den Text oft änderst, mal nach Doublebuffering oder MemDC schaun. Also auf gut deutsch alles selbst in dem Static machen.
Habs jetzt so gelöst (allerdings ziemlich lange gebraucht um drauf-zu-kommen): einfach die Buttons im Dialgo noch einmal gelöscht und wieder hinzugefügt. Dann werden sie über dem Picture Control platziert
Hab noch eine weitere Frage zum Picture Control: Die PNG-Bilder möchte ich gern mittels GdiPlus laden; bei einem kein Problem.
Aber gibt es eine Art ImageList wo man diese zwischenspeichern kann (ähnlich der ImageList bei Bitmaps aus der MFC)? Hab versucht die Imagelist aus der MFC zu verwenden, da kommt allerdings eine Fehlermeldung
cannot convert parameter 1 from 'Gdiplus::Bitmap **' to 'CBitmap *'
Oder reicht hier ein einfacher Cast, um das Problem zu beheben? Für mich ist die Transparenz wichtig der PNG-Bilder, was die Bitmaps nicht aufweisen
Karlchen
-
bin ein paar Steps weitergekommen: es wird jetzt alles so angezeigt wie es soll :p
In meiner Applikation habe ich einen Button installiert, mit dem man einen Modal Dialog öffnen kann. Wenn ich jetzt diesen wieder schließe bekomme ich die folgende Meldung angezeigt:
Der zu deaktivierende Aktivierungskontext ist nicht der zuletzt aktivierte Aktivierungskontext.
Im modalen Dialog verwende ich bis jetzt keinerlei GDIPlus Sachen. Ohne GDIPlus tritt diese Meldung aber auch nicht auf. Weiß jmd Rat?
-
wieder ein bißchen schlauer durch probieren. Man muss die GDI+ für jeden Dialog extra initialisieren und beenden.
Wenn ich jetzt jedoch im zweiten Dialog auch ein Control, welches auf GDI+ Methoden zurückgreift verwende, bekomm ich beim Schließen des Dialogs wieder diese Fehlermeldung angezeigt....
Hab bereits unterschiedliche Variablen für die GDI+ Initialisierung verwendet...
-
hat das irgendwas mit Detach / Attach zu tun, wenn man von einer View zu einem modalen Dialog wechselt und wieder zurück? Alles findet im gleichen Thread statt.
-
das Karlchen schrieb:
hat das irgendwas mit Detach / Attach zu tun, wenn man von einer View zu einem modalen Dialog wechselt und wieder zurück? Alles findet im gleichen Thread statt.
interessant ist, dass ich diese Warnung / Fehlermeldung
Der zu deaktivierende Aktivierungskontext ist nicht der zuletzt aktivierte Aktivierungskontext.
nur bei Windows7 bekomme. Bei Windows Xp gibt es keine Fehlermeldung,....
alles sehr suspekt
-
warum benutzt du nicht CImage für das Bild und und blittest das in dein Static und Printest darauf den Text. Leiste einfach eine Klasse von CStatic ab und erledige darin das Zeichnen, einfacher gehts ja nun fast nicht mehr. Oder worin liegt der vorteil GDI+ zu benutzen in deinem Fall?
-
CTecS schrieb:
warum benutzt du nicht CImage für das Bild und und blittest das in dein Static und Printest darauf den Text. Leiste einfach eine Klasse von CStatic ab und erledige darin das Zeichnen, einfacher gehts ja nun fast nicht mehr. Oder worin liegt der vorteil GDI+ zu benutzen in deinem Fall?
So viel einfacher ist das auch nicht, weil man beim Laden eines PNGs (Resource) den gleichen Weg gehen muss, wie wenn man die GDI+ Lib verwendet. Und beim Zeichnen (Draw-Methode von CImage) wird GDI+ auch wieder benötigt, wenn ich das richtig sehe.
Ein Vorteil von GDI+ ist, dass es mehrere Bsp-Applikationen gibt. Was die Stärken von GDI+ im Einzelnen sind, weiß ich nicht, da ich erst am Anfang bin von diesem Thema. Aber PNGs mit Transparenz etc. sind möglich.