CMFCRibbonBar:GetEditText()不';除非窗口失去焦点,否则不要返回CMFCRibbonComboBox的实际编辑框文本

CMFCRibbonBar:GetEditText()不';除非窗口失去焦点,否则不要返回CMFCRibbonComboBox的实际编辑框文本,mfc,mfc-feature-pack,cmfcribbonpanel,Mfc,Mfc Feature Pack,Cmfcribbonpanel,我有一个VS2008项目,有一个“查找”面板,其中包含一个可编辑的组合框以及一个向前和向后搜索按钮。当我按下搜索按钮时,GetEditText()返回一个过时的值 CMainFrame *pFrame = static_cast<CMainFrame*>(GetTopLevelFrame()); CMFCRibbonBar* pRibbon = pFrame->GetRibbonBar(); ASSERT_VALID(pRibbon); 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(); 
CMainFrame*pFrame=static_cast(gettoplavelframe());
CMFCRibbonBar*pRibbon=pFrame->GetRibbonBar();
断言有效(pRibbon);
CMFCRIBBONCOMBOX*PFINDCOMBOX=
动态向下广播(CMFCRibbonComboBox,pRibbon->FindByID(ID\u MY\u FIND\u COMBOBOX));
//这将返回组合框编辑字段获得焦点之前的最后一个值:
PFINDCOMBOX->GetEditText();
是否有标准方法将编辑字段的内容“刷新”到
GetEditText()
访问的值缓冲区

我注意到,在VS2010中,
CMFCRibbonPanel
类中有一个
SetFocused()
成员,可以用来从组合框中窃取焦点,并可能强制
GetEditText()
返回正确的值,但在VS2008中缺少它


我现在没有办法处理这个问题。希望任何人都有线索。

现在,在调用
GetEditText()
之前,我已经帮助自己在MDI子窗口中设置了一个
SetFocus()
。但这肯定不是最好的解决办法