我有一个对话框,里面有几个combobox
es作为成员变量。控制向导允许我为combobox
消息创建CBN_KILLFOCUS
es的处理程序。例如,自动调用一个这样的处理程序
void MyDlg::OnKillfocusMyCombo()
我的期望是,只要我跳出它就会调用这个处理程序。但它并没有被召唤。
答案 0 :(得分:1)
我遇到了同样的问题。这是MFC中的错误。 (已经过了4年,并且它仍然存在。)尽管广播了Win32 ON_CBN_KILLFOCUS
通知本身,但从未调用过CBN_KILLFOCUS
处理程序。
要解决此问题,请手动(Win32方式)覆盖对话框的WindowProc
:
LRESULT CMyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
//Fix for the bug in MFC
if(message == WM_COMMAND)
{
if(HIWORD(wParam) == CBN_KILLFOCUS &&
LOWORD(wParam) == Your_ComboBox_ID)
{
OnCbnKillfocusComboBox();
}
}
return CDialog::WindowProc(message, wParam, lParam);
}