2 Probleme mit Code zum Bitmap laden



  • Hi an alle!

    Ich lade ein Bitmap mit folgendem Code:

    CClientDC dc(this);
    
        CBitmap bitmap;
        bitmap.LoadBitmap(IDB_BITMAP1);
    
        BITMAP bm; 
        bitmap.GetObject(sizeof(bm), &bm);
        CDC speicherDC;
        speicherDC.CreateCompatibleDC(&dc); 
        CBitmap* pOldBitmap = speicherDC.SelectObject(&bitmap); 
    
        RECT rect;
        GetClientRect(&rect); 
    
        dc.BitBlt(20, 20, bm.bmWidth, bm.bmHeight, 
                  &speicherDC, 0, 0, SRCCOPY); 
    
        speicherDC.SelectObject(pOldBitmap);
    

    Der Code funktioniert sehr gut, aber zwei Probleme tauchen auf:

    1. Wenn ich den Code in oninitdialog() einfüge passiert gar nichts.
    2. Wenn ich das Dialogfeld minimiere wird das Bitmap nicht mehr neu gezeichnet.

    Jetzt stellt sich mir natürlich die Frage, was ich ändern muss um diese beiden Probleme zu beheben???

    Ich bin euch schon jetzt für jeden Tipp dankbar,

    chiao cha-OS



  • Du musst die WM_PAINT-Nachricht abfangen um festzustellen, dass dein Fenster neu gezeichnet wird. In die OnPaint kannst du dann auch deinen Code zum anzeigen Bitmaps reinsetzen.
    Da das Bild wohl immer da sein soll würd ich empfehlen eine Membervariable für das Bild in der Klasse anzulegen. Das Bild im Konstruktor laden und dann in der OnPaint es immer auf das Fenster blitten.



  • thx an Pellaeon, bin erstaunt wie schnell das ging 😮 DANKE!

    Hab den Code jetzt einfach in die onPaint() eingefügt.

    chiao cha-OS


Anmelden zum Antworten