[WIN32]-PNG einbinden und verwenden

Hallo,

sofern es immer die gleichen Bilder sind, reicht das einmalige Laden beim Programmstart (spart Rechenzeit), ansonsten nur im WM_PAINT - case.
Vor dem Laden sollten evt. schon vorhandende Bitmaps unbedingt mit "delete" gelöscht werden. Andernfalls explodiert der Speicher, wie du ja schon festgestellt hast :)

Gruß
MCoder
 
Da liegt das Problem... ich weiss nich wie ich es hinbekomm die in den Casezweigen zu deklarieren weil ich dann immer die Meldung bekomme das die Deklarierung durch case übersprungen wurde bzw. wenn ich sie in { / } packe sie garnicht als definiert gelten..
 
Also es liegt daran das der alle Bilder bei jeder Nachricht die an das Programm geht ( selbst Mausbewegungen) neu eingespeichert werden. Daher meine Frage wenn ich aus diesem Code
Code:
Gdiplus::Bitmap *BmpBild = Gdiplus::Bitmap::FromFile(L"Bild.png");
einen Code machen will der am Anfang die Variable deklariert und bei WM_CREATE das Bild einliest, wie sehe das aus?
 
So etwa:
C++:
// globale Deklaration und Initialisierung mit NULL am Anfang der .cpp
Gdiplus::Bitmap *BmpBild = NULL;

...

// Zweisung bei WM_CREATE
BmpBild = Gdiplus::Bitmap::FromFile(L"Bild.png"); 

...

// Verwendung bei WM_PAINT
if( BmpBild )
{
    g.DrawImage( BmpBild, ...
}

...

// Aufräumen bei WM_DESTROY
if( BmpBild ) { delete BmpBild; }
Gruß
MCoder
 

Neue Beiträge

Zurück