【发布时间】:2020-11-24 10:29:27
【问题描述】:
我的对话框上有一个CMFCMenuButton 控件:
CONTROL "Lookup",IDC_MFCMENUBUTTON_LOOKUP_PUBLISHER,
"MfcMenuButton",WS_TABSTOP,106,254,45,14
我这样初始化它:
m_menuLookupPublisher.LoadMenu(IDR_MENU_LOOKUP_PUBLISHER);
m_btnLookupPublisher.m_hMenu = m_menuLookupPublisher.GetSubMenu(0)->GetSafeHmenu();
效果很好:
更新
我添加了一些额外的代码(基于提供给我的答案):
m_menuLookupPublisher.LoadMenu(IDR_MENU_LOOKUP_PUBLISHER);
m_btnLookupPublisher.m_hMenu = m_menuLookupPublisher.GetSubMenu(0)->GetSafeHmenu();
m_btnLookupPublisher.m_nFlatStyle = CMFCButton::BUTTONSTYLE_SEMIFLAT;
m_btnLookupPublisher.m_bDrawFocus = FALSE;
这改善了按钮的外观和感觉,但仍不是 100% 相同。这是它现在没有焦点时的样子:
只是边框的显示方式不正确。 EnableWindowsThemeing 默认为 TRUE,所以我不确定我还需要在这里做什么。
烦人的是,在 VS IDE 中看起来还不错:
我的问题涉及菜单按钮的视觉显示。边框看起来与其他按钮不同。不用太多工作就能让它看起来一样吗?
更新
我偶然发现了这个question,它现在为我指明了正确的方向。如果我添加此代码:
m_btnLookupPublisher.ModifyStyle(BS_OWNERDRAW, 0, 0);
然后是正确绘制边框等,但使按钮的其他方面无用,因此它不是一个可行的解决方案。但剩下的答案正是我所需要的:
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
【问题讨论】:
标签: mfc popupmenubutton