我有一个对话框,我需要在其中显示标准信息图标。这是我的 RC 代码:
ICON "",IDC_ICON_INFORMATION,18,70,21,20
我按如下方式处理 WM_INITDIALOG 消息:
HICON aIcn = LoadIcon(NULL, IDI_INFORMATION);
SendDlgItemMessage(m_hWnd, IDC_ICON_INFORMATION, STM_SETICON, (WPARAM) aIcn, 0);
在 96 DPI 下一切正常:静态控件显示一个 32x32 像素的图标。
但是,当我切换到更高的 DPI(通过右键单击桌面,选择屏幕分辨率,然后单击使或其他项目变大或变小)时,图标无法缩放!由于其他所有内容都可以很好地缩放,因此该图标在视觉上看起来比相邻文本小得多。我希望在 144 DPI (150%) 上,图标尺寸将为 48x48 像素。我确实通过 XML 清单将我的应用程序声明为支持 DPI。
最糟糕的是,当我使用自己定制的图标(也来自 RC 文件)时,一切都可以完美缩放。此外,MessageBox
使用标志调用的函数MB_ICONINFORMATION
也会显示缩放版本的图标。
鉴于这些想法,我假设以下几点:
- 带有样式的静态控件
SS_ICON
可以显示缩放版本的图标。 - 包含标准信息图标的图标资源具有图标的缩放版本 (48x48)。
那我做错了什么?