Freigeben über


CallWindowProcA-Funktion (winuser.h)

Übergibt Nachrichteninformationen an die angegebene Fensterprozedur.

Syntax

LRESULT CallWindowProcA(
  [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 mit dem nIndex Parameter abgerufen wird, der auf GWL_WNDPROC oder DWL_DLGPROCfestgelegt ist, handelt es sich entweder um die Adresse einer Fenster- oder Dialogfeldprozedur oder um einen speziellen internen Wert, der nur für CallWindowProcsinnvoll ist.

[in] hWnd

Typ: HWND-

Ein Handle für die Fensterprozedur zum Empfangen der Nachricht.

[in] Msg

Typ: UINT-

Die Nachricht.

[in] wParam

Typ: WPARAM-

Zusätzliche nachrichtenspezifische Informationen. Der Inhalt dieses Parameters hängt vom Wert des Msg-Parameters ab.

[in] lParam

Typ: LPARAM-

Zusätzliche nachrichtenspezifische 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.

Bemerkungen

Verwenden Sie die CallWindowProc--Funktion für die Fensterunterklasse. In der Regel verwenden 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 die Fensterprozedur geändert wird, die einem bestimmten Fenster zugeordnet ist, wodurch das System die neue Fensterprozedur anstelle des vorherigen Aufrufs aufruft. Eine Anwendung muss alle Nachrichten übergeben, die nicht von der neuen Fensterprozedur an die vorherige Fensterprozedur verarbeitet werden, indem CallWindowProcaufgerufen wird. Auf diese Weise kann die Anwendung eine Kette von Fensterprozeduren erstellen.

Wenn STRICT- definiert ist, weist der parameter lpPrevWndFunc den Datentyp WNDPROCauf. Der WNDPROC- Typ wird wie folgt deklariert:

LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM); 

Wenn STRICT nicht definiert ist, weist der lpPrevWndFunc Parameter den Datentyp FARPROCauf. Der FARPROC Typ wird wie folgt deklariert:

int (FAR WINAPI * FARPROC) () 

In C gibt die FARPROC--Deklaration eine Rückruffunktion mit einer nicht angegebenen Parameterliste an. In C++ gibt die leere Parameterliste in der Deklaration jedoch an, dass eine Funktion keine Parameter aufweist. Dieser subtile Unterschied kann unerlässigen Code unterbrechen. Es folgt eine Möglichkeit, diese Situation zu behandeln:

#ifdef STRICT 
  WNDPROC MyWindowProcedure 
#else 
  FARPROC MyWindowProcedure 
#endif 
... 
  lResult = CallWindowProc(MyWindowProcedure, ...) ; 

Weitere Informationen zu Funktionen, die mit leeren Argumentlisten deklariert wurden, finden Sie unter Die C++-Programmiersprache, Second Edition, von Bjarne Stroustrup.

Die CallWindowProc--Funktion verarbeitet die Unicode-zu-ANSI-Konvertierung. Sie können diese Konvertierung nicht nutzen, wenn Sie die Fensterprozedur direkt aufrufen.

Beispiele

Ein Beispiel finden Sie unter Unterklassen eines Window-

Anmerkung

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
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winuser.h (enthalten Windows.h)
Library User32.lib
DLL- User32.dll
API-Satz ext-ms-win-ntuser-window-l1-1-4 (eingeführt in Windows 10, Version 10.0.14393)

Siehe auch

Konzeptionelle

GetWindowLong-

Referenz-

SetClassLong-

SetWindowLong-

Fensterprozeduren