C Win32-API Fensterinhalt löschen-nur wie?

badday

Commander
Registriert
Sep. 2007
Beiträge
3.023
Moin zusammen,

ich schreibe gerade an einem Programm in C mit der Win32-API.

Dabei möchte ich gerne den Fensterinhalt des Hauptfensters "löschen", bzw. weiß übermalen.
Dies sollte in einer if-Verzweigzung im case WM_COMMAND passieren.

Leider habe ich bisher keinen Befehl dafür gefunden.


Vll. weiß ihn einer von euch.

Danke!

MfG

badday
 
du brauchst eigentlich nur das handel von dem Fenster und auf das zeichnest du dann einfach nen rechteck oder sonst was.

sry, aber ich kann leider kein c nur c# ;)
 
Zuletzt bearbeitet:
Versuch das mal:

Code:
HDC hDc = GetDc(hWnd);
RECT rect;
SelectObject(hDc,CreateSolidBrush(0xffffffh)); // Farbe wählen
GetClientRect(hWnd,&rect); // koordinaten ermitteln
Rectangle(hDc,rect.left,rect.top,rect.right,rect.bottom); // zeichnen

ReleaseDc(hWnd,hDc);
 
Moin,

also GetDc muss GetDC heißen, ebenso bei ReleaseDC.


Das ganze funktioniert! Ich hatte anfangs nur vergessen, Begin/EndPaint hinzuschreiben, dann kann es natürlich nix werden.

Jetzt würde mich interessieren, ob alles wirklich nur übermalt wurde, oder ob z. B. die Trackbars, Editfenster, Label etc. gelöscht sind.

Vielen Dank an alle and a special thanks to Woey!

MfG

badday
 
Zuletzt bearbeitet:
badday schrieb:
Moin,
... würde mich interessieren, ob alles wirklich nur übermalt wurde ...
ja, so ist es - die child-controls (die du bis jetzt nicht erwähnt hast) sind immer noch da, und werden sich wieder neu zeichnen.

badday schrieb:
Moin,
.. ob z. B. die Trackbars, Editfenster, Label etc. gelöscht sind.

Wie gesagt, sind sie noch da. Um sie zu löschen musst du DestroyWindow(hChild) benutzen. Wenn du sie nur vorrübergehend ausblenden willst, benutze einfach ShowWindow(hCild,SW_HIDE). Zum Schluss mit UpdateWindow() das client area neu zeichen lassen.
 
Zuletzt bearbeitet:
Moin,

ja danke Woey, das habe ich auch angenommen, es wird ja schließlich nur hwnd (sprich das Main-Window) übermalt.

Danke nochmal!

MfG

badday
 
Zurück
Oben