如何对CMFCToolBarFontComboBox调用SetExtendedUI实现F4展开下拉列表
MFC工具栏字体下拉框快捷键修改操作指南
你需要在工具栏完成初始化、对应组合框控件实例已创建的阶段执行SetExtendedUI(FALSE)调用,具体操作步骤如下:
- 定位到主框架类(默认类名为
CMainFrame)的OnCreate成员函数,找到工具栏初始化的代码段,通常格式如下:if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("未能创建工具栏\n"); return -1; // 创建失败 } - 在上述工具栏初始化代码的下方,添加获取字体下拉组合框并修改属性的代码:
// 查找字体名称下拉框对应的工具栏按钮索引,ID_FONT_NAME为示例项目中字体下拉框的默认ID,自定义ID可自行替换 int nFontComboIndex = m_wndToolBar.CommandToIndex(ID_FONT_NAME); if (nFontComboIndex != -1) { // 转换为组合框按钮类型 CMFCToolBarComboBoxButton* pFontComboBtn = DYNAMIC_DOWNCAST(CMFCToolBarComboBoxButton, m_wndToolBar.GetButton(nFontComboIndex)); if (pFontComboBtn != nullptr) { // 获取实际的组合框控件实例 CComboBox* pFontCombo = pFontComboBtn->GetComboBox(); if (pFontCombo != nullptr) { // 关闭扩展UI模式,将展开快捷键切换为F4 pFontCombo->SetExtendedUI(FALSE); } } } - 特殊场景适配:如果执行上述代码时获取到的组合框指针为空,说明初始化阶段控件还未完成创建,可以将这段代码移动到主框架类的
OnInitialUpdate虚函数中执行,保证所有控件均已创建完成。
调用
SetExtendedUI(FALSE)后,组合框会默认关闭扩展UI模式,此时展开下拉列表的快捷键会自动从向下方向键切换为F4,完全匹配需求。
内容的提问来源于stack exchange,提问作者herb
相关产品推荐
相关产品推荐

