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