私のアプリケーションには、標準の MFC モーダル ダイアログがあります。ユーザーがダイアログ ウィンドウの外側をクリックしたときに、そのダイアログを閉じたいと思います。その目的のためON_MESSAGE(WM_KILLFOCUS, OnKillFocus)
に、ダイアログのメッセージ マップ hy を手動で入力します (クラス ウィザードにはそのオプションがありません)。
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 メソッドは何らかの理由で呼び出されません。