我有一个对话框,我需要显示标准信息图标。这里是我的RC代码:Win32:在高DPI下的对话框中显示股票图标
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大:静态控件显示一个32×32像素的图标。
然而,当我(在桌面通过单击鼠标右键,选择屏幕分辨率,并单击制作或其他物品或大或小)切换到高DPI的图标不结垢!由于其他一切都很好地缩放,图标看起来在视觉上比相邻文本小得多。我预计144 DPI(150%)的图标尺寸将为48x48像素。我确实通过XML清单将我的应用程序声明为DPI。
最令人头疼的是,当我使用我自己定制的图标(也来自RC文件)时,一切都完美地缩放。此外,使用MB_ICONINFORMATION
标志调用的MessageBox
函数也会显示图标的缩放版本。
鉴于这些想法,我认为以下几点:
- 与
SS_ICON
风格的静态控件可以显示缩放图标版本。 - 包含标准信息图标的图标资源具有缩放版本的图标(48x48)。
我做错了什么呢?
貌似'LoadIconWithScaleDown'功能(在Vista及更高版本),可以做的工作的注释部分的例子。任何其他想法? – Kerido 2010-08-25 11:24:04