[英]Multiple WndProc functions in Win32
這可能是一個愚蠢的問題,但你可以在Win32中注冊多個WndProc函數嗎? 例如,框架捕獲一些消息,我的應用程序對其他消息感興趣 - 如何在不修改框架代碼的情況下捕獲它們?
如果我理解你的意圖正確,你可以通過設置一個鈎子來做到這一點。 假設您知道要掛鈎的消息循環的線程,您可以沿着這些行執行某些操作(未選中):
SetWindowsHookEx(WH_CALLWNDPROC, yourHOOKPROC, NULL, theThreadId);
您可以使用函數CallWindowProc
而不是DefWindowProc
鏈接多個消息處理函數。
這是一個例子:
pfOriginalProc = SetWindowLong( hwnd, GWL_WNDPROC, (long) wndproc1 ); // First WNDPROC
pfOriginalProc2 = SetWindowLong( hwnd, GWL_WNDPROC, (long) wndproc2); // Second WNDPROC, WILL EXECUTE FIRST!!
LRESULT wndproc1( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch ( uMsg )
{
...
default:
return CallWindowProc( pfOriginalProc, hwnd, uMsg, wParam, lParam );
}
}
LRESULT wndproc2( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch ( uMsg )
{
...
default:
return CallWindowProc( pfOriginalProc2, hwnd, uMsg, wParam, lParam );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.