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 weg

    void 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.


Anmelden zum Antworten