在MFC程序中挂钩窗口创建

时间:2013-07-15 11:20:53

标签: c++ winapi mfc hook

我想在MFC程序中挂钩窗口创建。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

使用SetWindowHookEx安装CBTProc

这是一些示例代码。只需从程序开头调用InstallHook(),然后监控HCBT_CREATEWND通知代码即可。您可以通过从函数返回非零来取消窗口创建,如文档中所述。

LRESULT CALLBACK MyCbtHook(int nCode,  WPARAM wParam,  LPARAM lParam)
{
    switch(nCode)
    {
    case HCBT_CREATEWND:
        {
            HWND hWnd = (HWND)wParam;
            TRACE("A window is being created, HWND = %p\n", hWnd);
            break;
        }
    }

    return CallNextHookEx( 0, nCode, wParam, lParam );
}

void InstallHook()
{
    SetWindowsHookEx(WH_CBT, MyCbtHook, 0, GetCurrentThreadId());
}