我为我的文件制作了一个图标叠加层*.myfile
,但叠加层大小错误。当图标以 16x16 大小显示时,覆盖层会覆盖图标。
如何更改叠加层大小?( IShellIconOverlayIdentifier
)
我为我的文件制作了一个图标叠加层*.myfile
,但叠加层大小错误。当图标以 16x16 大小显示时,覆盖层会覆盖图标。
如何更改叠加层大小?( IShellIconOverlayIdentifier
)
您无法更改覆盖大小。而是使用所有必要尺寸都可用的多分辨率图标文件。
举个很好的例子,看看TortoiseSVN 的源代码。它们将仅使用一个图标文件,但如果您使用适当的绘画工具打开它,您会看到该文件包含不同的大小。
如果你看一下第一种方法,你会得到以下评论:
“Shell 调用 IShellIconOverlayIdentifier::GetOverlayInfo 来请求处理程序的图标覆盖的位置。图标覆盖处理程序返回包含覆盖图像的文件的名称,以及它在该文件中的索引。然后,Shell 将图标覆盖添加到系统图片列表。”
您可以在第 129 行看到它试图从注册表中找出所需文件的路径。通过浏览代码,您可以在此处找到 subversion 中的图标。在第 165 行,您可以看到它从注册表中获取文件名并将其写回其输出参数,也许还有让 Windows 决定应该从文件中获取哪个大小的魔术标志*pdwFlags = ISIOI_ICONFILE;
。