我正在使用Visual Studio 2010开发基于MFC的C ++应用程序。图标旁边有一个CToolBarCtrl
下拉按钮。
运行Windows 8的用户报告他们无法看到此工具栏中的某个图标。他们提供了一个屏幕截图,显示他们以150%的UI缩放运行Windows 8。我的应用程序目前设置为不支持DPI,所以这实际上应该没有什么区别。 (编辑:显然它确实有所作为 - 毕竟 - 当切换到96 DPI时它们不再有问题。)
从下面的屏幕截图中可以看出,工具栏下拉按钮在Windows安装上要比它们应该的要宽得多。因此,左侧工具栏中的图标之间的间距非常大,以至于无法再看到最后一个图标。屏幕截图中的右侧工具栏(没有任何下拉按钮)按预期显示。
我的(应该是):
他们的(下拉按钮太宽):
我的应用程序已经设置了图标(16x16)和按钮(27x24)大小,但这显然不会影响下拉按钮的大小。
所以我的问题是:为什么下拉按钮可能比我默认的Windows安装更宽,如何将它们更改为默认大小,以便所有图标都适合工具栏?我没有找到任何可以实际设置工具栏下拉按钮宽度的API。
我的类中的Init代码派生自CToolBarCtrl
:
SetButtonStructSize(sizeof(TBBUTTON));
SetBitmapSize(CSize(16, 16));
SetButtonSize(CSize(27, 24));
SetImageList(&icons);
SetDisabledImageList(&disabledIcons);
LONG lStyleOld = GetWindowLong(m_hWnd, GWL_STYLE);
lStyleOld |= CCS_NORESIZE | CCS_NOPARENTALIGN | CCS_NODIVIDER | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT;
SetWindowLong(m_hWnd, GWL_STYLE, lStyleOld);