CMFCMenuBar 一种 CMFCToolBar 的透明度
我想让 MFC 中的工具栏 (CMFCToolBar
) 显示透明,就像 CMFCMenuBar
的默认外观一样。
我正在使用控件样式 TBSTYLE_FLAT | TBSTYLE_TRANSPARENT
创建工具栏时并获得透明背景。但是,我仍然有顶部和底部边框,并且夹具也保持不变。
SetBorders(0,0,0,0)
或删除样式 CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM
不会成功。
使用CCS_NODIVIDER
(显然是为了删除 2px 顶部边框)也没有效果。
我可以想象自定义的 CMFCVisualManager 类可能是可行的方法(例如使用 CMFCVisualManager::OnFillBarBackground ),但目前还无法弄清楚这一点。
需要明确的是,这是我当前拥有的代码:
m_wndToolBar.CreateEx(this /*MainFrame*/, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT,
WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP)
LoadToolBar(IDR_MY_TOOLBAR, 0, 0, TRUE);
m_wndToolBar.SetPaneStyle(GetPaneStyle() & ~(CBRS_BORDER_TOP |
CBRS_BORDER_BOTTOM |
CBRS_BORDER_LEFT |
CBRS_BORDER_RIGHT));
m_wndToolBar.SetBorders(0,0,0,0);
这是我现在所在的位置:
这是我的目标:
< img src="https://i.sstatic.net/eQm5s.png" alt="在此处输入图像描述">
非常感谢任何帮助!
I want to let a Toolbar in MFC (CMFCToolBar
) appear transparent just like the default appearence of a CMFCMenuBar
.
I'm using the control styles TBSTYLE_FLAT | TBSTYLE_TRANSPARENT
when creating the toolbar and do get a transparent background. However, I still have a top and bottom border and the gripper stays the same as well.
SetBorders(0,0,0,0)
or removing the styles CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM
won't do the trick.
And using CCS_NODIVIDER
(for apparently removing the 2px top border) doesn't have an effect either.
I could imagine that a custom CMFCVisualManager
class might be the way to go (e.g. playing with CMFCVisualManager::OnFillBarBackground
), but couldn't figure anything out yet regarding that.
To be clear, this is the code I currently have:
m_wndToolBar.CreateEx(this /*MainFrame*/, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT,
WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP)
LoadToolBar(IDR_MY_TOOLBAR, 0, 0, TRUE);
m_wndToolBar.SetPaneStyle(GetPaneStyle() & ~(CBRS_BORDER_TOP |
CBRS_BORDER_BOTTOM |
CBRS_BORDER_LEFT |
CBRS_BORDER_RIGHT));
m_wndToolBar.SetBorders(0,0,0,0);
Here's where I am right now:
And this is my goal:
Any help is highly appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否尝试过调用
SetExclusiveRowMode(true)
?菜单栏具有独占行模式设置,工具栏默认情况下没有。Have you tried calling
SetExclusiveRowMode(true)
? Menu bars have exclusive row mode set, toolbars don't by default.