CallWindowProcW 関数 (winuser.h)
指定したウィンドウ プロシージャにメッセージ情報を渡します。
構文
LRESULT CallWindowProcW(
[in] WNDPROC lpPrevWndFunc,
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
パラメーター
[in] lpPrevWndFunc
型: WNDPROC
前のウィンドウ プロシージャ。
[in] hWnd
型: HWND
メッセージを受信するウィンドウ プロシージャへのハンドル。
[in] Msg
型: UINT
メッセージ。
[in] wParam
型: WPARAM
追加のメッセージ固有の情報。 このパラメーターの内容は、Msg パラメーターの値によって異なります。
[in] lParam
型: LPARAM
追加のメッセージ固有の情報。 このパラメーターの内容は、Msg パラメーターの値によって異なります。
戻り値
型: LRESULT
戻り値は、メッセージ処理の結果を指定し、送信されたメッセージに依存します。
備考
ウィンドウ サブクラス化には、CallWindowProc 関数を使用します。 通常、同じクラスを持つすべてのウィンドウは、1 つのウィンドウ プロシージャを共有します。 サブクラスは、同じクラスを持つウィンドウまたはウィンドウのセットで、そのクラスのウィンドウ プロシージャに渡される前に、別のウィンドウ プロシージャ (またはプロシージャ) によってメッセージがインターセプトおよび処理されます。
SetWindowLong 関数は、特定のウィンドウに関連付けられているウィンドウ プロシージャを変更してサブクラスを作成し、システムが前のウィンドウ プロシージャではなく新しいウィンドウ プロシージャを呼び出します。 アプリケーションは、CallWindowProcを呼び出して、新しいウィンドウ プロシージャで処理されていないメッセージ
STRICT
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
STRICT
int (FAR WINAPI * FARPROC) ()
C では、FARPROC 宣言は、パラメーター リストが指定されていないコールバック関数を示します。 ただし、C++ では、宣言の空のパラメーター リストは、関数にパラメーターがないことを示します。 この微妙な区別は、不注意なコードを壊す可能性があります。 この状況を処理する 1 つの方法を次に示します。
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;
空の引数リストで宣言された関数の詳細については、Bjarne Stroustrup C++ プログラミング言語 (第 2 版) を参照してください。
CallWindowProc 関数は、Unicode から ANSI への変換を処理します。 ウィンドウ プロシージャを直接呼び出す場合、この変換を利用することはできません。
例
例については、「ウィンドウ のサブクラス化
手記
winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CallWindowProc を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winuser.h (Windows.h を含む) |
ライブラリ | User32.lib |
DLL | User32.dll |
API セットの | ext-ms-win-ntuser-window-l1-1-4 (Windows 10 バージョン 10.0.14393 で導入) |
関連項目
概念
GetWindowLong の
リファレンス
SetClassLong の
SetWindowLong の