C
Keks @ Belli
Danke, ist mir nun aufgefallen - ich wusste vorher nicht das WM_SIZE DURCH Move_Window aufgerufen wird.
Schokokeks @ Martin
Ich habe es nun noch einmal mit InvalidateRect versucht, und es klappt! Mein Problem war, dass WM_SIZE eben nicht NUR durch Move_Window aufgerufen wird, jedenfalls wurde es dauerhaft aufgerufen. daher habe ich mir nun einen if catcher eingebaut (EDIT: ifs NICHT ineinander verschachteln.):
case WM_SIZE:
{
vergleichswert = jetztwert;
vergleichswert2=jetztwert2;
RECT rect;
GetWindowRect(hwnd, &rect);
jetztwert = rect.bottom-rect.top;
jetztwert2 = rect.right-rect.left;
if (jetztwert != vergleichswert)
{
del_img();
}
if (jetztwert2 != vergleichswert2)
{
del_img();
}
}
mit der vorher definierten Funktion:
int jetztwert;
int vergleichswert;
int jetztwert2;
int vergleichswert2;
int del_img()
{
RECT rc;
GetClientRect(0, &rc);
InvalidateRect(0, &rc, true);
}
Allerdings flackert das Bild noch weiß beim Ändern der Fenstergröße - aber irgendwatt iss ja imma - Vielen Dank soweit, für das Flackern denke ich lohnt ein neuer Thread
Oh, und Martin, du hast schon recht mit dem komplett Tutorial durcharbeiten, ABER: Wenn ich ein Tutorial durcharbeite, beschäftige ich mein Hirn vielleicht eine Stunde mit dem Problem. Wenn ich auf "gut Glück" versuche, mir selbst ein Problem zu setzen und es zu lösen, beschäftigt mich das den ganzen Tag, ich träume sogar von dem Problem. Bei mir ist der Lerneffekt in diesem Fall einfach größer als bei einem Tutorial - allein dadurch dass ich mich länger mit dem Problem beschäftige.
Außerdem ist es gut und richtig dass du mich immer wieder mal drauf hinweist, mir z.B. die WM_SIZE durchzulesen, weil die Lösung meines Problems ja drinsteht. Beim ersten Lesen der WM_SIZE habe ich nur nach den Parametern geguckt. Als du mich nochmal drauf angestoßen hast, habe ich mir auch die "Remarks" angesehen ... solangsam schwant mir, dass ich mir beim Verwenden einer neuen Funktion (die ich noch nicht kenne) tatsächlich wirklich ALLES doppelt, drei- und vierfach durchlesen muss! Das war (und ist!) ein wichtiger Lerneffekt für mich, vielen Dank dafür
EDIT:
Hier meine Suchergebnisse zum Thema "Flickern", mit denen ich das Flackern des Bildschirms beim Ändern der Fenstergrösse erfolgreich verhindern konnte:
http://forums.codeguru.com/showthread.php?t=338319
http://msdn.microsoft.com/en-us/library/windows/desktop/ms648055(v=vs.85).aspx
To completely avoid flickering, I would suggest to handle WM_ERASEBKGND, and return TRUE.
Quote: gsterken
case WM_ERASEBKGND:
{
return 0;
}
An dieser Stelle: Keks @ gsterken ! (= cookie for gsterken !)