在我的应用程序中,我有一个标准的MFC模式对话框。当用户在对话框窗口外单击时,我想关闭该对话框。为此,我将ON_MESSAGE(WM_KILLFOCUS, OnKillFocus)
放在对话框的消息映射中(类向导不提供该选项):
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方法不会因某种原因被调用。
答案 0 :(得分:1)
谢谢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() ;
}
答案 1 :(得分:0)
快速搜索 - > http://www.itlisting.org/5-windows/964b01901673b4b0.aspx 我很确定这是一种更好的方法。