複製鏈接
請複製以下鏈接發送給好友

CallWindowProc

鎖定
CallWindowProc是將消息信息傳送給指定的窗口過程的函數。使用函數CallWindowsProc可進行窗口子分類。通常來説,同一類的所有窗口共享一個窗口過程。子類是一個窗口或者相同類的一套窗口,在其消息被傳送到該類的窗口過程之前,這些消息是由另一個窗口過程進行解釋和處理的。
外文名
CallWindowProc
所屬學科
信息技術
功    能
將消息信息傳送給指定的窗口過程
類    別
函數

CallWindowProc基本介紹

函數原型:LRESULT CallWindowProc(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM IParam);

CallWindowProc參數

lpPrevWndFunc:指向前一個窗口過程的指針。如果該值是通過調用GetWindowLong函數,並將該函數中的nIndex參數設為GWL_WNDPROC或DWL_DLGPROC而得到的,那麼它實際上要麼是窗口或者對話框的地址,要麼就是代表該地址的句柄。
hWnd:指向接收消息的窗口過程的句柄。
Msg:指定消息類型。
wParam:指定其餘的、消息特定的信息。該參數的內容與Msg參數值有關。
IParam:指定其餘的、消息特定的信息。該參數的內容與Msg參數值有關。
返回值:返回值指定了消息處理結果,它與發送的消息有關。

CallWindowProc其他信息

使用函數CallWindowsProc可進行窗口子分類。通常來説,同一類的所有窗口共享一個窗口過程。子類是一個窗口或者相同類的一套窗口,在其消息被傳送到該類的窗口過程之前,這些消息是由另一個窗口過程進行解釋和處理的。
SetWindowLong函數通過改變與特定窗口相關的窗口過程,使系統調用新的窗口過程來創建子類,新的窗口過程替換了以前的窗口過程。應用程序必須通過調用CallWindowsProc來將新窗口過程沒有處理的任何消息傳送到以前的窗口過程中,這樣就允許應用程序創建一系列窗口過程。
如果定義了STRICT,那麼lpPrevWndFunc參數具有WNDPROC數據類型。WNDPROC類型説明如下:
LRESULT(CALLBACK· WNDPROC)(HWND, UINT,WPARAM,LPARAM)
如果沒有定義STRICT,那麼lpPrevWndFunc參數具有FARPROC數據類型。FARPROC類型説明如下:int(FAR WINAPL·FARPROC)()
在C語言中,FARPROC申明表示為一個沒有指定參數表的回調函數。然而在 C++中;申明中的空參數表示該函數沒有參數。這種微妙的區別有可能引起代碼出錯。下面是一種解決辦法:#ifdef STRICT;WNDPROC MyWindowProcedure;#else;FARPROC MyindowProcedure;#endif IResult=CallWindowProc(MyWindowProcedure,…)
有關該函數的空參數表方面進一步的信息,請參考Bjarne Stroustrup編寫的C++編程語言第2版。
對於Windows NT:函數CallWindowsProc function進行了Unicode至ANSf轉換處理。如果你直接調用該窗口過程,那麼無法利用該轉換。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;頭文件:winuser.h;庫文件:user32.lib:Unicode:在Windows NT環境中以Unicode和ANSI版本實現。