如何确定图标资源中包含的可用图标大小?

时间:2018-01-12 17:00:53

标签: c++ windows mfc icons dpi-aware

我正在经历让我的MFC应用程序DPI意识到的痛苦过程。我打算包含包含不同图标大小的icon resources。例如,list view controls的小图标应获得尺寸:16x16,20x20,24x24等。as recommend by Microsoft

我知道我可以使用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()会缩小较大的图标。但是,根据David Heffernan的this answer,我应该尽量避免缩放图标(至少是小图标):

  

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

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

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

0 个答案:

没有答案