2013-02-18 77 views
0

在我的應用程序中,我有一個標準的MFC模式對話框。當用戶在對話窗口外單擊時,我想關閉對話框。爲此目的,我在對話框的消息映射HY手放ON_MESSAGE(WM_KILLFOCUS, OnKillFocus)(類嚮導不提供該選項):如果我點擊對話框外用於模態對話框的WM_KILLFOCUS不起作用

BEGIN_MESSAGE_MAP(CTestTreeCtrlDlg, CDialog) 
//{{AFX_MSG_MAP(CTestTreeCtrlDlg) 
    ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree) 
//}}AFX_MSG_MAP 
    ON_MESSAGE(WM_KILLFOCUS, OnKillFocus) 
END_MESSAGE_MAP() 
... 
void CTestTreeCtrlDlg::OnKillFocus() 
{ 
    ... 
} 

現在,當然後者失去重心,但OnKillFocus方法由於某種原因不會被召喚。

+1

我覺得WM_ACTIVATE消息應該有更好的人選來處理這個 – patriiice 2013-02-18 15:11:49

回答

0

謝謝patriiice!

WM_ACTIVATE這項工作:

BEGIN_MESSAGE_MAP(CTestTreeCtrlDlg, CDialog) 
//{{AFX_MSG_MAP(CTestTreeCtrlDlg) 
    ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree) 
//}}AFX_MSG_MAP 
    ON_WM_ACTIVATE() 
END_MESSAGE_MAP() 
... 
void CTestTreeCtrlDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{ 
    CDialog::OnActivate(nState, pWndOther, bMinimized); 

    if (nState == WA_INACTIVE) 
    OnOK() ; 
}