我有一个对话框,其中有几个 combobox
es 作为成员变量。控件向导允许我为 CBN_KILLFOCUS
消息的 combobox
es 创建处理程序。例如,自动调用一个这样的处理程序
void MyDlg::OnKillfocusMyCombo()
我希望这个处理程序在我退出时立即被调用。但它不会被调用。
最佳答案
我遇到了同样的问题。这是 MFC 中的错误。 (4 年多过去了,它仍然存在。)尽管 Win32 CBN_KILLFOCUS
通知本身已广播,但从未调用 ON_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);
}
关于c++ - MFC 组合框 killfocus 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23068549/