如何检索给定 DPI 的系统图像列表?
当应用程序是系统 DPI 感知时,SHGetFileInfo
和类似的函数将句柄返回到正确缩放的系统图像列表。C++ 示例:
handle =
SHGetFileInfo(L"", 0, &fileInfo, sizeof(fileInfo),
SHGFI_SYSICONINDEX | (large ? SHGFI_LARGEICON : SHGFI_SMALLICON));
但是对于每个显示器的 DPI 感知,这还不够,因为应用程序可以在不使用系统 DPI 的显示器上运行(或者应用程序可以有多个窗口,每个窗口在不同的显示器上,具有不同的 DPI)。
例如,在 168 DPI(175% 缩放)显示器上,使用标准 96 系统 DPI,您会看到未缩放的 16x16 小图标:
所以我希望,SHGetFileInfo
(或类似的)有一个 DPI 感知变体,就像其他功能的 DPI 感知变体一样: