Forum: PC-Programmierung C++ Child Window verdeckt


von Joshua H. (joshih13)


Lesenswert?

Guten Tag,
bin gerade an einem Programm und habe das Problem, dass die Anweisungen 
in WM_PAINT mein Child Window für einen Button blockieren. Das heißt der 
Button ist unter dem mit WM_PAINT gezeichneten. Wenn ich WM_PAINT 
wegnehme funktioniert alles und der Button wird angezeigt. Bei WM_PAINT 
zeichne ich einen Buffer auf den Bildschirm und der Hintergrund 
(hbrBackground) musste auf NULL gesetzt werden. Wie hole ich den Button 
in den Fordergrund bzw. mache ihn wieder sichtbar? Achso und was 
schreibt man nochmal bei hInstance des Buttons? Ich weiß, dass bei mir 
da immer irgendeine Funktion stand, meine ich zumindest (bin gerade im 
Urlaub, hab nicht alles da was ich brauche und DEV C++ ist auch etwas am 
rumspacken). Ach und wie konnte man nochmal die Fenstergröße 
"einfrieren"? Da war irgendwas mit getminmaxinfo oder so... weiß ich 
nicht mehr genau^^ Naja danke erstmal im Voraus.

: Verschoben durch User
von bluppdidupp (Gast)


Lesenswert?

Joshua H. schrieb:
> Wenn ich WM_PAINT
> wegnehme funktioniert alles und der Button wird angezeigt.
Ist evtl. WS_CLIPCHILDREN/WS_CLIPSIBLINGS bei einem/mehreren der 
beteiligten Fenster/Controls nicht gesetzt?

>Achso und was schreibt man nochmal bei hInstance des Buttons?
Bei CreateWindow? Dort gibt man generell das Handle des Moduls (Also 
praktisch der .exe oder der .dll) an, aus dem  heraus das jeweilige 
Fenster/Control erzeugt wird. Also in der Regel GetModuleHandle(NULL) 
bzw. die hInstance, die man von WinMain() übergeben bekommen hat (oder 
im Falle von *.dlls entsprechend aus der DllMain())

>Fenstergröße "einfrieren"?
Das sinnvollste wäre wohl ein Fenster zu erzeugen, das keinen 
anfassbaren Rahmen hat ;D
siehe auch: 
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600.aspx
Also insbesondere keinen WS_OVERLAPPED*-Stil nutzen.
Ansonsten warst du da schon richtig:
http://msdn.microsoft.com/de-de/library/windows/desktop/ms632626.aspx

von Joshua H. (joshih13)


Lesenswert?

Naja jetzt wird der Button zwar angezeigt, allerdings erst, nachdem ich 
das Fenster einmal bewegt habe...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.