如何调整Windows图标覆盖的大小?

6
我制作了一个图标叠加到我的文件上,*.myfile,但是叠加的大小不正确。当图标以16x16的尺寸显示时,叠加会覆盖图标。
我该如何更改叠加的大小? (IShellIconOverlayIdentifier) 左边是我的图标,右边是TortoiseSVN

在您的图标编辑器中调整大小。 - David Heffernan
你创建的图标文件中的图标尺寸是多少? - Cody Gray
32x32,当我选择显示最大的图标时,它不是很清晰。 - iuwei
你调用了LoadIcon吗?该API不允许你控制加载的大小。 - David Heffernan
@DavidHeffernan 没有,IShellIconOverlayIdentifier 成员中没有这样的东西。而且也没有地方(该接口)设置或返回“图标类型”。 - iuwei
1个回答

6
您无法更改叠加的大小。相反,使用多分辨率图标文件,其中包含所有必要的大小,这是一个很好的例子,请参考TortoiseSVN的源代码。他们只会使用一个图标文件,但是如果您使用适当的绘图工具打开它,您会看到该文件包含不同的大小。
更新
如果您查看第一种方法,您将得到以下评论:
“The Shell calls IShellIconOverlayIdentifier::GetOverlayInfo to request the location of the handler's icon overlay. The icon overlay handler returns the name of the file containing the overlay image, and its index within that file. The Shell then adds the icon overlay to the system image list.”
您可以在第129行中看到它尝试从注册表中找出所需文件的路径。通过浏览代码,您可以在此处找到子版本中的图标。在第165行中,您可以看到它从注册表中获取文件名,并将其写回其输出参数,也许使用魔术标志让Windows决定从文件中取哪个大小是*pdwFlags = ISIOI_ICONFILE;

在运行时,图标应该位于图标组资源中,是吗?Windows需要哪些尺寸的图标? - David Heffernan
@Oliver... 你是指一个图像文件包含多个图像吗?但是如何决定显示哪一个呢?我正在查看源代码,但是在TortoiseSVN源代码中我找不到你提到的代码和图像。 - iuwei
谢谢,这很有帮助:“多分辨率图标文件”。 - iuwei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接