我有一个对话框,里面有几个combobox
es 作为成员变量。控制向导让我combobox
为消息的 es创建处理程序CBN_KILLFOCUS
。例如,自动调用一个这样的处理程序
void MyDlg::OnKillfocusMyCombo()
我的期望是只要我退出它就会调用这个处理程序。但它没有被调用。
我有一个对话框,里面有几个combobox
es 作为成员变量。控制向导让我combobox
为消息的 es创建处理程序CBN_KILLFOCUS
。例如,自动调用一个这样的处理程序
void MyDlg::OnKillfocusMyCombo()
我的期望是只要我退出它就会调用这个处理程序。但它没有被调用。
我遇到了同样的问题。这是 MFC 中的一个错误。(4 年多过去了,它仍然存在。)尽管 Win32通知本身是广播ON_CBN_KILLFOCUS
的,但不知何故从未调用过处理程序。CBN_KILLFOCUS
要修复此问题WindowProc
,请手动覆盖对话框(Win32 方式):
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);
}