CallWindowProcW-Funktion (winuser.h)
Übergibt Nachrichteninformationen an die angegebene Fensterprozedur.
Syntax
LRESULT CallWindowProcW(
[in] WNDPROC lpPrevWndFunc,
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
Parameter
[in] lpPrevWndFunc
Typ: WNDPROC
Die vorherige Fensterprozedur. Wenn dieser Wert durch Aufrufen der GetWindowLong-Funktion abgerufen wird, wobei der nIndex-Parameter auf GWL_WNDPROC oder DWL_DLGPROC festgelegt ist, handelt es sich tatsächlich entweder um die Adresse einer Fenster- oder Dialogfeldprozedur oder um einen speziellen internen Wert, der nur für CallWindowProc von Bedeutung ist.
[in] hWnd
Typ: HWND
Ein Handle für die Fensterprozedur, um die Nachricht zu empfangen.
[in] Msg
Typ: UINT
Die Meldung.
[in] wParam
Typ: WPARAM
Zusätzliche meldungsspezifische Informationen. Der Inhalt dieses Parameters hängt vom Wert des Msg-Parameters ab.
[in] lParam
Typ: LPARAM
Zusätzliche meldungsspezifische Informationen. Der Inhalt dieses Parameters hängt vom Wert des Msg-Parameters ab.
Rückgabewert
Typ: LRESULT
Der Rückgabewert gibt das Ergebnis der Nachrichtenverarbeitung an und hängt von der gesendeten Nachricht ab.
Hinweise
Verwenden Sie die CallWindowProc-Funktion für die Fensterunterklasse. In der Regel teilen sich alle Fenster mit derselben Klasse eine Fensterprozedur. Eine Unterklasse ist ein Fenster oder eine Gruppe von Fenstern mit derselben Klasse, deren Nachrichten von einer anderen Fensterprozedur (oder -prozedur) abgefangen und verarbeitet werden, bevor sie an die Fensterprozedur der -Klasse übergeben werden.
Die SetWindowLong-Funktion erstellt die Unterklasse, indem sie die einem bestimmten Fenster zugeordnete Fensterprozedur ändert, wodurch das System die neue Fensterprozedur anstelle der vorherigen aufruft. Eine Anwendung muss alle Nachrichten, die nicht von der neuen Fensterprozedur verarbeitet wurden, durch Aufrufen von CallWindowProc an die vorherige Fensterprozedur übergeben. Dadurch kann die Anwendung eine Kette von Fensterprozeduren erstellen.
Wenn STRICT definiert ist, weist der parameter lpPrevWndFunc den Datentyp WNDPROC auf. Der WNDPROC-Typ wird wie folgt deklariert:
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
Wenn STRICT nicht definiert ist, weist der parameter lpPrevWndFunc den Datentyp FARPROC auf. Der FARPROC-Typ wird wie folgt deklariert:
int (FAR WINAPI * FARPROC) ()
In C gibt die FARPROC-Deklaration eine Rückruffunktion an, die über eine nicht angegebene Parameterliste verfügt. In C++ gibt die leere Parameterliste in der Deklaration jedoch an, dass eine Funktion über keine Parameter verfügt. Diese subtile Unterscheidung kann unvorsichtigen Code unterbrechen. Dies ist eine Möglichkeit, diese Situation zu bewältigen:
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;
Weitere Informationen zu Funktionen, die mit leeren Argumentlisten deklariert werden, finden Sie unter The C++ Programming Language, Second Edition, von Bjarne Stroustrup.
Die CallWindowProc-Funktion verarbeitet die Unicode-in-ANSI-Konvertierung. Sie können diese Konvertierung nicht nutzen, wenn Sie die Fensterprozedur direkt aufrufen.
Beispiele
Ein Beispiel finden Sie unter Unterklassen eines Fensters.
Hinweis
Der winuser.h-Header definiert CallWindowProc als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winuser.h (windows.h einschließen) |
Bibliothek | User32.lib |
DLL | User32.dll |
APIs | ext-ms-win-ntuser-window-l1-1-4 (eingeführt in Windows 10, Version 10.0.14393) |
Siehe auch
Konzept
Referenz