我想在MFC程序中挂钩窗口创建。
有没有办法做到这一点?
答案 0 :(得分:1)
这是一些示例代码。只需从程序开头调用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());
}