CMFCRibbonBar: GetEditText() не возвращает фактический текст поля редактирования CMFCRibbonComboBox, если окно не теряет фокус

У меня есть проект VS2008 с панелью "Найти", содержащей редактируемое поле со списком, а также кнопку поиска вперед и назад. Когда я нажимаю кнопку поиска, GetEditText() возвращает устаревшее значение.

CMainFrame *pFrame = static_cast<CMainFrame*>(GetTopLevelFrame());
CMFCRibbonBar* pRibbon = pFrame->GetRibbonBar();
ASSERT_VALID(pRibbon);
CMFCRibbonComboBox* pFindCombobox = 
    DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_MY_FIND_COMBOBOX));

// this returns the last value before the combo box edit field got the focus:
pFindCombobox->GetEditText(); 

Существует ли стандартный способ "сбрасывать" содержимое поля редактирования в буфер значений, доступ к которому осуществляется GetEditText()?

Я заметил, что в VS2010 есть SetFocused() член в CMFCRibbonPanel класс, который может быть использован для кражи фокуса из выпадающего списка и предположительно силы GetEditText() вернуть правильное значение, но оно отсутствует в VS2008.

В настоящее время у меня заканчиваются идеи, как справиться с этим. Надеюсь, у кого-нибудь есть подсказка.

1 ответ

На данный момент я помог себе с SetFocus() в дочернее окно MDI, прежде чем я позвоню GetEditText(), Но это не самый лучший обходной путь наверняка!

Другие вопросы по тегам