MFC CMFCToolBar 最小化恢复工具栏显示异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC CMFCToolBar 最小化恢复工具栏显示异常相关的知识,希望对你有一定的参考价值。

各位,mfc写的一个程序,用CMFCToolBar 添加了两个自定义工具栏,可是程序最小化,再恢复最大化时,工具栏出现如下诡异的情况,有思路或者知道怎么回事的,赐教一下,十分感谢!

没多少财富了,见谅

工具栏被遮挡后系统没重画造成的。追问

应该是vs2010的bug,MDI程序开多个tab窗口,打开工具栏全是有黑框,而且只有最大化恢复时有问题
不过,最大化时重绘通过什么事件或方法来处理

追答

WM_SIZING()

参考技术A 在重新计算客户端区域的地方断点一下, 好像是叫onMeasureClient还是啥的追问

你的意思就是说,这时候指定工具栏的大小?

如何在mfc中设置大小和透明/清除CMFCToolBar按钮和图标?

我创建了一些(CMFCToolBar)工具栏,并为它们添加了按钮和图标。我在微软的官方网站上看到,CMFCToolBar采用23x22按钮尺寸和16x15图标尺寸(参考:link)。

如果我使用16x15的图标,那么图标会显得模糊。这是因为图标最初的大小为16x16。我使用函数SetSizes(CSize (23,23), CSize(16,16))来更改图标大小,但图标不正确:

还有另一种设置图标和按钮大小的方法吗?


Update

我在创建工具栏之前调用了SetSize函数,但图标仍然显得有些模糊:

我想知道是否有办法将图标/按钮设置为透明或使其清晰,就像我们可以在TBSTYLE_TRANSPARENT函数中通过CreateEx设置工具栏透明。

答案

SetSizes是一个影响整个库的静态函数。

应在创建任何工具栏或菜单对象之前调用它。最佳位置是在你申请的InitInstance

但是我的tipp:使用推荐的尺寸! 16x15和23x22 ....

透明度可以使用标准的32位RGB / A位图完成。如果您有16色位图,则应使用RGB(192,192,192)作为背景的标准颜色。它会自动替换为所需的背景颜色。

这也是answered here

以上是关于MFC CMFCToolBar 最小化恢复工具栏显示异常的主要内容,如果未能解决你的问题,请参考以下文章

MFC:如何让 CMFCToolBarComboBoxButton 显示在 CMFCToolBar 上?

mfc中的CMFCToolBar类怎么实现工具栏上的按钮多行显示??急!!!

如何在mfc中设置大小和透明/清除CMFCToolBar按钮和图标?

跪求:在VS2008中MFC环境下,用CMFCToolBar创建工具栏,要在每个按钮上显示文字,该怎么实现啊?

在 CMFCToolBar 中禁用项目

如何动态创建CMFCToolbar的SetOriginalState?