WM_NCCALCSIZE Nachricht

Wird gesendet, wenn größe und Position des Clientbereichs eines Fensters berechnet werden müssen. Durch die Verarbeitung dieser Meldung kann eine Anwendung den Inhalt des Clientbereichs des Fensters steuern, wenn sich die Größe oder Position des Fensters ändert.

Ein Fenster empfängt diese Meldung über seine WindowProc-Funktion .

#define WM_NCCALCSIZE                   0x0083

Parameter

wParam

Wenn wParamTRUE ist, wird angegeben, dass die Anwendung angeben soll, welcher Teil des Clientbereichs gültige Informationen enthält. Das System kopiert die gültigen Informationen in den angegebenen Bereich innerhalb des neuen Clientbereichs.

Wenn wParamAUF FALSE festgelegt ist, muss die Anwendung den gültigen Teil des Clientbereichs nicht angeben.

lParam

Wenn wParamTRUE ist, verweist lParam auf eine NCCALCSIZE_PARAMS Struktur, die Informationen enthält, die eine Anwendung zum Berechnen der neuen Größe und Position des Clientrechtecks verwenden kann.

Wenn wParamauf FALSE festgelegt ist, verweist lParam auf eine RECT-Struktur . Bei der Eingabe enthält die Struktur das vorgeschlagene Fensterrechteck für das Fenster. Beim Beenden sollte die Struktur die Bildschirmkoordinaten des entsprechenden Fensterclientbereichs enthalten.

Rückgabewert

Typ: LRESULT

Wenn der wParam-ParameterFALSE ist, sollte die Anwendung null zurückgeben.

Wenn wParamTRUE ist, sollte die Anwendung null oder eine Kombination der folgenden Werte zurückgeben.

Wenn wParamTRUE ist und eine Anwendung null zurückgibt, wird der alte Clientbereich beibehalten und an der oberen linken Ecke des neuen Clientbereichs ausgerichtet.

Rückgabecode/-wert BESCHREIBUNG
WVR_ALIGNTOP
0x0010
Gibt an, dass der Clientbereich des Fensters beibehalten und am oberen Rand der neuen Position des Fensters ausgerichtet werden soll. Wenn Sie beispielsweise den Clientbereich an der oberen linken Ecke ausrichten möchten, geben Sie die werte WVR_ALIGNTOP und WVR_ALIGNLEFT zurück.
WVR_ALIGNRIGHT
0x0080
Gibt an, dass der Clientbereich des Fensters beibehalten und an der rechten Seite der neuen Position des Fensters ausgerichtet werden soll. Wenn Sie beispielsweise den Clientbereich an der unteren rechten Ecke ausrichten möchten, geben Sie die werte WVR_ALIGNRIGHT und WVR_ALIGNBOTTOM zurück.
WVR_ALIGNLEFT
0x0020
Gibt an, dass der Clientbereich des Fensters beibehalten und an der linken Seite der neuen Position des Fensters ausgerichtet werden soll. Wenn Sie beispielsweise den Clientbereich an der unteren linken Ecke ausrichten möchten, geben Sie die werte WVR_ALIGNLEFT und WVR_ALIGNBOTTOM zurück.
WVR_ALIGNBOTTOM
0x0040
Gibt an, dass der Clientbereich des Fensters beibehalten und am unteren Rand der neuen Position des Fensters ausgerichtet werden soll. Wenn Sie beispielsweise den Clientbereich an der linken oberen Ecke ausrichten möchten, geben Sie die werte WVR_ALIGNTOP und WVR_ALIGNLEFT zurück.
WVR_HREDRAW
0x0100
Die Verwendung in Kombination mit anderen Werten mit Ausnahme von WVR_VALIDRECTS bewirkt, dass das Fenster vollständig neu gezeichnet wird, wenn das Clientrechteck die Größe horizontal ändert. Dieser Wert ähnelt CS_HREDRAW Klassenstil.
WVR_VREDRAW
0x0200
Die Verwendung in Kombination mit anderen Werten mit Ausnahme von WVR_VALIDRECTS bewirkt, dass das Fenster vollständig neu gezeichnet wird, wenn das Clientrechteck die Größe vertikal ändert. Dieser Wert ähnelt CS_VREDRAW Klassenstil.
WVR_REDRAW
0x0300
Dieser Wert bewirkt, dass das gesamte Fenster neu gezeichnet wird. Es handelt sich um eine Kombination aus WVR_HREDRAW und WVR_VREDRAW Werten.
WVR_VALIDRECTS
0x0400
Dieser Wert gibt an, dass die Rechtecke, die von WM_NCCALCSIZE denMembern rgrc[1] und rgrc[2] der NCCALCSIZE_PARAMS-Struktur angegeben werden, gültige Ziel- bzw. Quellbereichsrechtecke enthalten. Das System kombiniert diese Rechtecke, um den Bereich des zu erhaltenden Fensters zu berechnen. Das System kopiert einen beliebigen Teil des Fensterbilds, der sich innerhalb des Quellrechtecks befindet, und klammert das Bild in das Zielrechteck ein. Beide Rechtecke befinden sich in übergeordneten oder bildschirmrelativen Koordinaten. Dieses Flag kann nicht mit anderen Flags kombiniert werden.
Dieser Rückgabewert ermöglicht es einer Anwendung, komplexere Clientbereich-Erhaltungsstrategien zu implementieren, z. B. das Zentrieren oder Beibehalten einer Teilmenge des Clientbereichs.

 

Bemerkungen

Das Fenster kann neu gezeichnet werden, je nachdem, ob die CS_HREDRAW oder CS_VREDRAW Klassenstil angegeben ist. Dies ist die standardmäßige, abwärtskompatible Verarbeitung dieser Nachricht durch die DefWindowProc-Funktion (zusätzlich zur üblichen Clientrechteckberechnung, die in der vorherigen Tabelle beschrieben wird).

Wenn wParamAUF TRUE festgelegt ist, wird durch einfaches Zurückgeben von 0 ohne Verarbeitung der NCCALCSIZE_PARAMS Rechtecke die Größe des Clientbereichs auf die Größe des Fensters einschließlich des Fensterrahmens geändert. Dadurch werden der Fensterrahmen und Untertitel Elemente aus Dem Fenster entfernt, sodass nur der Clientbereich angezeigt wird.

Ab Windows Vista wirkt sich das Entfernen des Standardframes, indem einfach 0 zurückgegeben wird, wenn wParamauf TRUE festgelegt ist, keine Frames aus, die mithilfe der DwmExtendFrameIntoClientArea-Funktion in den Clientbereich erweitert werden. Nur der Standardrahmen wird entfernt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Winuser.h (windows.h einschließen)

Siehe auch

Referenz

DefWindowProc

MoveWindow

SetWindowPos

NCCALCSIZE_PARAMS

Konzept

Windows

Andere Ressourcen

RECT