更改CMFCMenuButton的样式类似于我的对话框中的常规按钮
我的对话框上有一个控件:更改CMFCMenuButton的样式类似于我的对话框中的常规按钮,mfc,popupmenubutton,Mfc,Popupmenubutton,我的对话框上有一个控件: CONTROL "Lookup",IDC_MFCMENUBUTTON_LOOKUP_PUBLISHER, "MfcMenuButton",WS_TABSTOP,106,254,45,14 我这样初始化它: m_menuLookupPublisher.LoadMenu(IDR_MENU_LOOKUP_PUBLISHER); m_btnLookupPublisher.m
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();
它工作得很好:
更新 我添加了一些额外的代码(基于提供给我的答案): 这改善了按钮的外观和感觉,但仍然不是100%相同。下面是它现在没有焦点时的样子: 只是边框的显示方式不正确
EnableWindowTheming
默认情况下为TRUE
,因此我不确定在这里还需要做什么
恼人的是,在VS IDE中,它看起来很好:
我的问题涉及菜单按钮的视觉显示。边框看起来与其他按钮不同。不需要做太多的工作就能让它看起来一样吗
更新 我无意中发现了这一点,它现在为我指明了正确的方向。如果我添加此代码:
m_btnLookupPublisher.ModifyStyle(BS_OWNERDRAW, 0, 0);
然后是正确绘制边界等,但使按钮的其他方面无效,因此这不是一个可行的解决方案。但剩下的答案是我所需要的:
CMFCVisualManager::SetDefaultManager(运行时_类(CMFCVisualManager类)) 你是说3D造型吗?然后您需要指定“展开”样式
按钮展开样式:
谢谢你的建议。我没有试过。如果我使用平面
,则按钮按设计没有矩形,除非它有焦点。如果我使用半平面
,它在视觉上仍然不完全像按钮。我猜它们只是呈现方式不同而已。@andrewruckle如果你想让它们匹配,请将其他两个按钮也设置为CMfcButton
(否菜单
)否。我的应用程序中有许多对话框。只有两个用户使用这些菜单按钮。我并不是为了这个化妆品问题而把它们都改了。请看最新的问题。
m_btnLookupPublisher.ModifyStyle(BS_OWNERDRAW, 0, 0);