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

时间:2014-05-06 11:04:14

标签: mfc mfc-feature-pack cmfcribbonpanel

我有一个带有“查找”面板的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 个答案:

答案 0 :(得分:0)

目前,在致电SetFocus()之前,我已经帮助自己使用了GetEditText()到MDI子窗口。但这肯定不是最好的解决方法!