Size grip in Fenstern
Heute gibt’s einen Artikel über die Lösung eines eigentlich trivialen Problems:
Seit Win2k, wenn ich richtig informiert bin, gibt es ja die Möglichkeit, einen sg. “size grip” in der unteren, rechten Ecke eines Fensters anzuzeigen, um zu verdeutlichen, dass es sich dort schön resizen lässt. Das schaut nett aus und vergrößert auch etwas die Fläche, in der der Maus-cursor zum Resize-cursor wird. Seinen eigenen Fenstern diesen Style zu geben ist aber garnicht so trivial.. Im Prinzip müssen v.A. 3 Dinge beachtet werden:
1) Das Ding gehört gezeichnet. Dies wird in WM_PAINT
erledigt.
2) Beim Ändern der Fenstergröße muss der Grip auch gelöscht werden, damit er beim neu zeichnen nicht “verschmiert”. Das erledigen wir in WM_SIZING
, also noch, bevor die Größenänderung passiert ist.
3) Dem Grip muss auch eine Funktionalität zugeordnet werden, sodass der Cursor entsprechend zum Resize-cursor wird, wenn sich die Maus auf dem Grip befindet. Hierfür tracen wir das Maus-Event in WM_NCHITTEST
Beim Zeichnen des Grips muss zusätzlich darauf geachtet werden, dass dieser im maximierten Fensterzustand nicht gezeichnert wird.
Ich habe in folgendem Codeschnipsel die oben genannten Punkte zusammengefasst, wie man sie in der Window-Dispatcherroutine zu behandeln hat, um den gewünschten Effekt zu erzielen. Viel Spaß!