ModifyStyle
-
Folgendes Problem: Ich habe ein nicht-modales Dialogfenster, und versuche mit Aufrufen wie z.B.
ModifyStyle(WS_MINIMIZEBOX, 0);
die MinimierenSchaltfläche zu deaktivieren (in WinXP sollte sie darauf hin verdunkelt dargestellt werden). Sie ist zwar daraufhin nicht mehr anklickbar, aber verdunkelt ist sie auch nicht...
Ähliches Problem beim aktivieren von von vornherein deaktivierten (verdunkelten) Schaltflächen:
ModifyStyle(0, WS_MINIMIZEBOX);
Hierbei wird die Schaltfläche nicht wieder hell,sondern belibt verdunkelt. erst wenn ich mit der Maus drüber gehe, wecheselt sie die darstellung.
-
Hallo,
versuch mal ein Invalidate oder ein schlichten UpdateWindow.
Gruß
Ocrana
-
Nein, das hat nciht funktioniert, weil die Buttons ja im NonClientBereich liegen, und der von Invalidate/UpdateWindow unberührt bleibt. Ich hab es jetzt mit SendMessage(WM_NCPAINT) geschafft., trotzdem danke!
-
sehr schlechte Lösung
-
was ist ne bessere Lösung? Gibt es ne Art Update-Funktion mit der man den NC-Bereich updatet?
-
RedrawWindow vielleicht?
-
Nein, Redraw Window scheint es auch nciht zu bringen.. aber erklärt mir doch mal, wieso SendMessage(WM_NCPAINT) ne schlechte Lösung ist? Weil.. der jenige der das gesagt hat, war ja nicht grade reich an Argumenten und Erläuterungen.
-
Zu all den Funktionen die hier genannt wurden (RedrawWindow, UpdateWindow, Invalidate) steht in der MSDN dass sie nur den Client-Bereich betreffen. Und in sachen Non-Client ist da nur die Möglichkeit OnNcPaint() oder SendMessage(WM_NCPAINT) - was ja eigentlihc das selbe ist. Also kann die Möglichkeit ja eigneltihc nciht so schlecht sein
-
guck dir RedrawWindow nochmal genauer an. Da gibt's auch Flags für den Non-Client Bereich.
-
Stimmt, hab ich übersehen... aber RedrawWindow tut auch nix anderes, als WM_NCPAINT an die betreffenden NonCLient-Teile zu schicken. Also kann ich das ja auch direkt machen, oder?
-
@DerGhost
Schau Dir mal wParam von WM_NCPAINT an !!!wParam
Handle to the update region of the window. The update region is clipped to the window frame. When wParam is 1, the entire window frame needs to be updated.Wo schickst Du dieses Handle denn, wenn Du SendMessage verwendest?