2013-02-26 2 views
0

I 다음 MFC 응용 프로그램의 UI 구조가 있습니다SetWindowHookEx 블록 WM_ERASEBKGND 중첩 된 창에서

Main Frame 
- CView derived class 
- CWnd derived class 
--- CMFCTabCtrl derived class 
---- CDialog derived class 

CMFCTabCtrl가 길게 혼잡 윈도우에게 등등 등등 파생 클래스 등을 설정할 수 있습니다 ...

당신이 만약을 깊이로 위를 정의 할 수 있습니다 창문의 나무로 생각 트리의 깊이는 의미 일 때 문제가 발생 0

:

Main Frame 
- CView derived class 
- CWnd derived class 
--- CMFCTabCtrl derived class 
----- CWnd derived class 
------- CMFCTabCtrl derived class 
-------- CDialog derived class 
트리 깊이가 0입니다 경우

  1. :

    내가 내 응용 프로그램에 다음 코드를 추가 : 다음 응용 프로그램을 실행하고 메인 프레임 크기를 조정할

    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()); 
    

    , 나는 다음을 발견 대화 상자에 WM_ERASEBKGND 메시지가 수신됩니다.

  2. 트리 깊이가 1 인 경우 메시지가 대화 상자에 수신되지 않습니다.

제 설명이 충분히 명확 해졌기를 바랍니다.

후크를 설정하면 극적인 방식으로 동작에 영향을줍니다.

이전에 이런 종류의 문제가 발생 했습니까?

답변

관련 문제