我想在 MFC 程序中挂钩窗口创建。
有没有办法做到这一点?
这是一些示例代码。只需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());
}