子類別化和自動訊息轉譯
子類別化是一種技術,可讓應用程式在視窗程式有機會處理訊息之前,攔截並處理傳送或張貼至特定視窗的訊息。 作業系統會根據已子類別化視窗程式的函式形式,自動將訊息轉譯成 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 函式期間執行。
如需子類別化的詳細資訊,請參閱 視窗程式。
相關主題