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()
, Но это не самый лучший обходной путь наверняка!