MFC工具栏:如何设置下拉按钮宽度

时间:2016-01-10 15:28:02

标签: c++ winapi mfc

我正在使用Visual Studio 2010开发基于MFC的C ++应用程序。图标旁边有一个CToolBarCtrl下拉按钮。

运行Windows 8的用户报告他们无法看到此工具栏中的某个图标。他们提供了一个屏幕截图,显示他们以150%的UI缩放运行Windows 8。我的应用程序目前设置为不支持DPI,所以这实际上应该没有什么区别。 (编辑:显然它确实有所作为 - 毕竟 - 当切换到96 DPI时它们不再有问题。)

从下面的屏幕截图中可以看出,工具栏下拉按钮在Windows安装上要比它们应该的要宽得多。因此,左侧工具栏中的图标之间的间距非常大,以至于无法再看到最后一个图标。屏幕截图中的右侧工具栏(没有任何下拉按钮)按预期显示。

我的(应该是):

Toolbar as I see it

他们的(下拉按钮太宽):

Toolbar as they see it

我的应用程序已经设置了图标(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);

0 个答案:

没有答案