簡體   English   中英

Win32中的多個WndProc函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM