MFC combobox killfocus не работает

У меня есть диалоговое окно с несколькими comboboxВ нем как член переменных. Мастер управления позволяет мне создавать обработчики для comboboxэто для CBN_KILLFOCUS сообщение. Например, один такой обработчик автоматически вызывается

void MyDlg::OnKillfocusMyCombo()

Я ожидаю, что этот обработчик будет вызван, как только я выйду из него. Но это не называется.

0 ответов

Я столкнулся с той же проблемой. Это ошибка в 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);
}
Другие вопросы по тегам