0
我有以下MFC應用程序UI結構:SetWindowHookEx塊WM_ERASEBKGND嵌套窗口
Main Frame
- CView derived class
- CWnd derived class
--- CMFCTabCtrl derived class
---- CDialog derived class
的CMFCTabCtrl可容納在轉動CWnd派生類等等等等...
如果您認爲它作爲窗口的樹讓限定以上是在深度0
當樹的深度爲1,意味着將出現問題:
Main Frame
- CView derived class
- CWnd derived class
--- CMFCTabCtrl derived class
----- CWnd derived class
------- CMFCTabCtrl derived class
-------- CDialog derived class
添加以下代碼以我的申請:
extern HHOOK hHook = nullptr;
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
return CallNextHookEx(hook, nCode, wParam, lParam);
}
hHook = SetWindowsHookEx(WH_CALLWNDPROC, &HookProc, AfxGetInstanceHandle(), GetCurrentThreadId());
我然後運行應用程序和調整大小的主框架,我注意到以下:
- 在這種情況下,其中樹的深度爲0在對話框中收到
WM_ERASEBKGND
消息。 - 在樹深度爲1的情況下,在對話框中未收到
WM_ERASEBKGND
消息。
我希望我的解釋清楚。
設置掛鉤會以如此戲劇性的方式影響行爲,這似乎很奇怪。
你們有沒有遇到過這種問題?