Ich habe ein globales Flag, anhand dem mein Fenster seine Hintergrundgrafik aussucht
Im WM_PAINT steht also:
Das funktioniert so weit prima, habe ich schon in diversen Anwendungen benutzt
Aber jetzt habe ich ein Problem, das verstehe ich nicht
Mache ich:
dann macht er gar nichts, bzw. er macht schon, aber die Grafik im Fenster ändert sich nicht
Ich habe mir ein dutzend MessageBoxen quer über den Code verteilt, er kommt auf klick schön brav zum paint, wählt dort auch die richtige Grafik aus, läuft quer durch den WM_PAINT, aber im Fenster sehe ich keine Änderung, sprich die Grafik bleibt immer die Gleiche
Mache ich dagegen:
dann wechselt er schön brav bei jedem Klick die Grafik aus
Man berichtige mich wenn ich etwas übersehen habe, aber HIDE / SHOW macht doch auch nur einen WM_PAINT hinterher
Warum funktioniert WM_PAINT direkt bei mir nicht?
Im WM_PAINT steht also:
Code:
case WM_PAINT:
{
int ABC = IDB_MYBACKGROUND2;
if(bgsetting == 1)
{
ABC = IDB_MYBACKGROUND1;
}
HDC hdc;
HBITMAP g_hbmBG = NULL;
BITMAP bm;
PAINTSTRUCT ps;
g_hbmBG = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(ABC));
...
...
...
}
break;
Das funktioniert so weit prima, habe ich schon in diversen Anwendungen benutzt
Aber jetzt habe ich ein Problem, das verstehe ich nicht
Mache ich:
Code:
case WM_LBUTTONDOWN:
{
if(bgsetting == 1)
{
bgsetting = 0;
SendMessage(myWindow, WM_PAINT, 0, 0);
return 0;
}
if(bgsetting == 0)
{
bgsetting = 1;
SendMessage(myWindow, WM_PAINT, 0, 0);
return 0;
}
}
break;
dann macht er gar nichts, bzw. er macht schon, aber die Grafik im Fenster ändert sich nicht
Ich habe mir ein dutzend MessageBoxen quer über den Code verteilt, er kommt auf klick schön brav zum paint, wählt dort auch die richtige Grafik aus, läuft quer durch den WM_PAINT, aber im Fenster sehe ich keine Änderung, sprich die Grafik bleibt immer die Gleiche
Mache ich dagegen:
Code:
case WM_LBUTTONDOWN:
{
if(bgsetting == 1)
{
bgsetting = 0;
ShowWindow(myWindow, SW_HIDE);
ShowWindow(myWindow, SW_SHOW);
return 0;
}
if(bgsetting == 0)
{
bgsetting = 1;
ShowWindow(myWindow, SW_HIDE);
ShowWindow(myWindow, SW_SHOW);
return 0;
}
}
break;
dann wechselt er schön brav bei jedem Klick die Grafik aus
Man berichtige mich wenn ich etwas übersehen habe, aber HIDE / SHOW macht doch auch nur einen WM_PAINT hinterher
Warum funktioniert WM_PAINT direkt bei mir nicht?