Bitmap verschwindet wenn anderes Fenster drüber lag
-
also folgendes Problem habsch:Wenn ich nen Button drück soll ein Bild erscheinen. Des macht es auch
Wenn ich itze aber ein anderes Fenster drüber gelegt habe und dann zurück gehe is des Bild wegvoid CImaglistDlg::OnLaden() { CBitmap bild1; bild1.Attach(LoadImage NULL,"Bilder/bild1.bmp",IMAGE_BITMAP,NULL,NULL,LR_LOADFROMFILE|LR_DEFAULTCOLOR|LR_DEFAULTSIZE)); m_bild.SetBitmap(bild1); }So das Bild soll erst nach dem Klick auf den Button erscheinen und dann stehen bleiben

thx, schonmal im vorraus

-
Eine Möglichkeit:
- den Code aus deiner Funktion OnLaden() heraus nehmen und an das Ende von OnPaint() schreiben
- in deiner Funktion OnLaden() OnPaint() aufrufen.
- eine boolsche Membervariable bei deiner Klasse CImaglistDlg hinzufügen
- in OnInitDialog() die boolsche Variable auf false setzen (d.h. der Button wurde noch nicht gedrückt)
- in OnLaden() die boolsche Variable auf true setzen (vor dem Aufruf von OnPaint())
- deinen Code, der jetzt in die OnPaint() verschoben wurde, rufst du nur auf, wenn der Button schon einmal dedrückt wurde, also noch ein if(die_boolsche_Membervariable == true) davor packen
-
thx, das funzt prima
, hab grad probiert, aber bei meiner Bildliste funzt das net
, muß ich da irgendwo anners noch was hinschreiben? Die Liste ist in einem Listenelement. 
-
Vielleicht klappt es ja, wenn du noch ein
m_MembervariableVonDemListenelement.Invalidate();
oder ein
m_MembervariableVonDemListenelement.RedrawWindow();
an das Ende der OnPaint() schreibst...
-
Cool, es klappt so
m_testlist.RedrawWindow();m_testliste ist die Membervariable.
Jetzt gibet das letzte problem: Die Bilder verschwinden wenn ich im Listenelement scrolle
Hast du da noch ne Idee wie die sich wieder zeichnen?
-
Öhm, eine Idee wäre, nach einer Scroll-Message zu suchen, OnScroll oder so, diese abzufangen und dort auch ein Redraw von dem Listenelement aufzurufen. Das klingt aber jetzt schon nach flackern und flimmern...
Vielleicht gibt es ja auch sowas wie EndScroll, das wäre besser zum Neuzeichnen. Oder spätestens bei SELCHANGE das Listenelement wieder neu zeichnen aber mehr fällt mir gerade nicht ein.