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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Dieser Wert bewirkt, dass das gesamte Fenster neu gezeichnet wird. Es handelt sich um eine Kombination aus WVR_HREDRAW und WVR_VREDRAW Werten. |
|
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 |
|
Siehe auch
-
Referenz
-
Konzept
-
Andere Ressourcen