【问题标题】:CMFCMenuBar kind of Transparency for a CMFCToolBarCMFCMenuBar 一种 CMFCToolBar 的透明度
【发布时间】:2012-03-07 14:20:06
【问题描述】:

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

这是我现在的位置:

这是我的目标:

非常感谢任何帮助!

【问题讨论】:

  • 您是否尝试删除CBRS_GRIPPER?考虑在您的问题中发布您用于创建/修改工具栏的实际代码。
  • 我不想移除抓手,我只想让它看起来与 CMFCMenuBar 一样,即透明。

标签: c++ mfc toolbar transparent


【解决方案1】:

你试过打电话给SetExclusiveRowMode(true)吗?菜单栏有排他模式设置,工具栏默认没有。

【讨论】:

  • 是的,事实上我确实将独占行模式设置为 true,这一切正常,但它不会改变任何关于透明度的内容。
猜你喜欢
  • 2014-03-17
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多