У меня есть диалоговое окно с несколькими combobox
В нем как член переменных. Мастер управления позволяет мне создавать обработчики для combobox
это для CBN_KILLFOCUS
сообщение. Например, один такой обработчик автоматически вызывается
void MyDlg::OnKillfocusMyCombo()
Я ожидаю, что этот обработчик будет вызван, как только я выйду из него. Но это не называется.
Я столкнулся с той же проблемой. Это ошибка в MFC. (Прошло более 4 лет, и это все еще там.) Как-то ON_CBN_KILLFOCUS
обработчик никогда не вызывается, хотя Win32 CBN_KILLFOCUS
само уведомление транслируется.
Чтобы исправить это переопределить WindowProc
для диалога вручную (Win32-way):
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);
}
Других решений пока нет …