0

我可以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 中它看起来还不错:

在此处输入图像描述

我的问题涉及菜单按钮的视觉显示。边框看起来与其他按钮不同。不需要太多工作就可以让它看起来一样吗?


更新

我偶然发现了这个问题,它现在为我指明了正确的方向。如果我添加此代码:

m_btnLookupPublisher.ModifyStyle(BS_OWNERDRAW, 0, 0);

然后是正确绘制边框等,但使按钮的其他方面无用,因此它不是一个可行的解决方案。但答案的其余部分是我需要的:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

4

1 回答 1

1

你说的是3D外观吗?然后您需要指定“平面”样式BUTTONSTYLE_FLAT

https://docs.microsoft.com/en-us/cpp/mfc/reference/cmfcbutton-class?view=msvc-160#m_nflatstyle

于 2020-11-24T20:26:19.737 回答