user-interface – Win32:在高DPI下的对话框中显示股票图标
我有一个对话框,我需要显示标准信息图标.这是我的RC代码:
ICON "",IDC_ICON_INFORMATION,18,70,21,20 我按如下方式处理WM_INITDIALOG消息: HICON aIcn = LoadIcon(NULL,IDI_INFORMATION); SendDlgItemMessage(m_hWnd,STM_SETICON,(WPARAM) aIcn,0); 在96 DPI下一切都很好:静态控件显示一个32×32像素的图标. 但是,当我切换到更高DPI时(通过右键单击桌面,选择屏幕分辨率,然后单击Make或其他更大或更小的项目),图标不会缩放!由于其他所有内容都可以很好地扩展,因此图标看起来比相邻文本小得多.我预计在144 DPI(150%)上,图标尺寸将为48×48像素.我确实通过XML清单将我的应用程序声明为DPI感知. 最糟糕的是,当我使用我自己的定制图标(也来自RC文件)时,一切都完美无缺.此外,使用MB_ICONINFORMATION标志调用的MessageBox函数也会显示图标的缩放版本. 鉴于这些想法,我假设如下: >具有SS_ICON样式的静态控件可以显示图标的缩放版本. 那我做错了什么? 解决方法
使用
LoadImage()而不是LoadIcon(),并使用从GetSystemMetrics(SM_CYICON)和GetSystemMetrics(SM_CXICON)获取的值指定cxDesired和cyDesired参数.
或者也许只是声明你的应用程序DPI意识就足够了?您可以通过简单地创建文本文件来轻松尝试,使其成为清单文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Windows,Mac,Android中使用Seed在JavaScript中编写独
- .net – Microsoft Enterprise Library的替代品
- 备份 – 通过WAN复制大而密集的Windows卷 – 对于DFS-R来说
- windows – (linebreak-style)预期的换行符为’LF’但找到’
- windows-server-2008 – 如何设置ExecutionPolicy:拒绝访问
- windows-phone-7 – 不使用pin的Twitter身份验证
- 寻找程序来查看Windows消息
- windows-server-2003 – 如果计算机是Windows 2003域的一部
- Windows服务是如何在三台机器上链接的
- windows – 按文件夹层次结构重命名文件