サブクラス化と自動メッセージ変換
サブクラス化は、ウィンドウ プロシージャがメッセージを処理する前に、アプリケーションが特定のウィンドウに送信または投稿されたメッセージをインターセプトして処理できるようにする手法です。 オペレーティング システムは、ウィンドウ プロシージャをサブクラス化した関数の形式に応じて、メッセージを Windows (ANSI) コード ページ または Unicode 形式 自動的に変換します。
SetWindowLongA 関数の次の呼び出しは、hWnd パラメーターによって識別されるウィンドウに関連付けられている現在のウィンドウ プロシージャをサブクラス化します。 または、アプリケーションで SetWindowLongPtrA使用することもできます。 NewWndProc 新しいウィンドウ プロシージャは、Windows コード ページ形式のテキストを含むメッセージを受信します。
OldWndProc = (WNDPROC) SetWindowLongA(hWnd,
GWL_WNDPROC, (LONG)NewWndProc);
NewWndProc メッセージの処理が完了すると、次のように CallWindowProc 関数を使用して、メッセージを OldWndProc 渡します。
CallWindowProc(OldWndProc, hWnd, uMessage, wParam, lParam);
OldWndProc が UNICODE のクラス スタイルで作成された場合、メッセージは、NewWndProc によって受信された Windows コード ページ フォームから Unicode に変換されます。
同様に、SetWindowLongW または SetWindowLongPtrW関数呼び出すと、Unicode テキスト メッセージを受け取るウィンドウ プロシージャで現在のウィンドウ プロシージャがサブクラス化されます。 メッセージ変換は、必要に応じて、CallWindowProc 関数の処理中に実行されます。
サブクラス化の詳細については、「ウィンドウ プロシージャの 」を参照してください。
関連トピック