【问题标题】:Displaying icon larger than 32x32 in dialog box在对话框中显示大于 32x32 的图标
【发布时间】:2012-01-14 05:41:15
【问题描述】:

您好,我在 win32 中创建了一个对话框:

ABOUTBOX DIALOG DISCARDABLE 32, 32, 180, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON "OK",IDOK,66,80,50,14
    ICON "ID_MYICON_2",IDC_STATIC,0,0,48,48
    CTEXT "comment1",IDC_STATIC,40,12,100,8
    CTEXT "comment2",IDC_STATIC,7,40,166,8
    CTEXT "comment3",IDC_STATIC,7,52,166,8
END

图标文件包含不同大小的图像,即 16x16、32x32、48x48 等,但上面的代码只允许它显示为 32x32。即使我把它改成

    ICON "ID_MYICON_2",IDC_STATIC,0,0,16,16

.. 它仍然显示为 32x32。您如何完全控制图标大小?我的初衷是显示一个bmp。

非常感谢任何帮助。

【问题讨论】:

  • 如果您的 *.ico 中只包含一个 48x48 图标文件会怎样?

标签: winapi win32gui


【解决方案1】:

这是设计的行为。见Static Control Styles

该样式忽略了 CreateWindow 参数 nWidth 和 nHeight;这 控件自动调整大小以适应图标。 因为它使用 LoadIcon 函数,SS_ICON 样式只能加载图标 尺寸 SM_CXICON 和 SM_CYICON。可以绕过这个限制 除了 SS_ICON 之外,还可以使用 SS_REALSIZEIMAGE 样式。

此外,没有什么可以阻止您以编程方式加载 48x48 图标并将其传递给控件。

【讨论】:

  • 谢谢。辛苦了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多