iuw*_*wei 6 c# windows windows-shell shell-icons
我为我的文件制作了一个图标叠加层*.myfile,但叠加层大小错误.当图标显示为16x16大小时,叠加层将覆盖图标.
如何更改叠加尺寸?(IShellIconOverlayIdentifier)

您无法更改叠加层大小.而是使用可提供所有必要尺寸的多分辨率图标文件.
有一个很好的例子,请看一下TortoiseSVN的来源.它们将只使用一个图标文件,但是如果使用适当的绘图工具打开它,您将看到此文件包含不同的大小.
如果你看一下第一种方法,你会得到以下评论:
"Shell调用IShellIconOverlayIdentifier :: GetOverlayInfo来请求处理程序图标覆盖的位置.图标覆盖处理程序返回包含覆盖图像的文件的名称及其在该文件中的索引.然后Shell将图标覆盖添加到系统图片列表."
您可以在第129行中看到它试图从注册表中找出所需文件的路径.通过浏览代码,您可以在这里找到subversion中的图标.在第165行中,您可以看到它从注册表中获取文件名并将其写回其out参数,并且可能是魔术标志,让Windows决定从文件中获取哪个大小*pdwFlags = ISIOI_ICONFILE;.