1

我正在经历让我的 MFC 应用程序 DPI 感知的痛苦过程。我计划包含包含不同图标大小的图标资源。例如,列表视图控件的小图标应采用 Microsoft 推荐的尺寸:16x16、20x20、24x24 等。

我知道我可以使用LoadImage()(甚至LoadIconWithScaleDown())加载所需大小的图标,如下所示:

HICON hIcon = (HICON)LoadImage(AfxGetApp()->m_hInstance,
                               MAKEINTRESOURCE(IDI_MYICON),
                               IMAGE_ICON,
                               GetSystemMetrics(SM_CXSMICON),
                               GetSystemMetrics(SM_CYSMICON),
                               LR_DEFAULTCOLOR);

如文档的备注部分所述LoadIconWithScaleDown(),如果图标大小不可用,则将LoadImage()较小的图标放大并LoadIconWithScaleDown()缩小较大的图标。但是,根据大卫赫弗南的这个回答,我应该尽量避免缩放图标(至少是小图标):

[...] 例如,如果系统指标建议使用 18px 图标,而您只有 16px 和 20px 图标,则制作一个新的 18px 图标。用透明像素填充图像,并将 16px 图标 blit 到这个 18px 图像的中间。从中制作图标。[...]

我想这样做,但出于稳健性的原因,我不想对可用的图标大小做出任何假设。因此,我想在运行时动态确定图标资源的可用图标大小。但是,我发现的图标功能似乎都没有提供这种功能。

如何找出我的图标资源中可用的图标大小(例如IDI_MYICON)?

4

0 回答 0