C++ Child Window verdeckt

OP #3767432
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.
Gast #3767433
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren