6

我为我的文件制作了一个图标叠加层*.myfile,但叠加层大小错误。当图标以 16x16 大小显示时,覆盖层会覆盖图标。

如何更改叠加层大小?( IShellIconOverlayIdentifier)

左边是我的,右边是 tortoisesvn

4

1 回答 1

6

您无法更改覆盖大小。而是使用所有必要尺寸都可用的多分辨率图标文件。

举个很好的例子,看看TortoiseSVN 的源代码。它们将仅使用一个图标文件,但如果您使用适当的绘画工具打开它,您会看到该文件包含不同的大小。

更新

如果你看一下第一种方法,你会得到以下评论:

“Shell 调用 IShellIconOverlayIdentifier::GetOverlayInfo 来请求处理程序的图标覆盖的位置。图标覆盖处理程序返回包含覆盖图像的文件的名称,以及它在该文件中的索引。然后,Shell 将图标覆盖添加到系统图片列表。”

您可以在第 129 行看到它试图从注册表中找出所需文件的路径。通过浏览代码,您可以在此处找到 subversion 中的图标。在第 165 行,您可以看到它从注册表中获取文件名并将其写回其输出参数,也许还有让 Windows 决定应该从文件中获取哪个大小的魔术标志*pdwFlags = ISIOI_ICONFILE;

于 2012-01-18T08:09:39.003 回答