CMFCMenuBar如何在CMFCToolBar上实现透明效果

4

我想让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);

我现在的情况如下:

而我的目标是这样的:

enter image description here

非常感谢任何帮助!


你尝试过删除 CBRS_GRIPPER 吗?考虑在你的问题中发布实际使用的创建/修改工具栏的代码。 - Cody Gray
我不想移除夹爪,我只是希望它的外观与CMFCMenuBar相同,即透明。 - mrknownothing
1个回答

0

你尝试过调用 SetExclusiveRowMode(true) 吗?菜单栏已经设置了独占行模式,工具栏默认没有。


是的,事实上我确实将独占行模式设置为true,这很好运行,但它并不会改变透明度方面的任何内容。 - mrknownothing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接