Com 用于获取Vista/7外壳缩略图的IShellItemImageFactory界面是否损坏?

Com 用于获取Vista/7外壳缩略图的IShellItemImageFactory界面是否损坏?,com,winapi,thumbnails,Com,Winapi,Thumbnails,我想用它来检索文件的shell缩略图。根据MSDN文档,如果我传入一个256x256的SIZE结构,它应该用一个256x256位图填充HBITMAP参数,如果我使用SIIGBF_RESIZETOFIT标志,它应该将较小的缩略图调整为256x256。没有。结果是256x256位图,中间画了一个小图标。 好吧,也许这不是SIIGBF_Resizetoff应该做的。但是,据我所知,我应该能够使用SIIGBF_BIGGERSIZEOK并指定一个很小的大小(比如1x1),它应该返回实际的缩略图大小。没有。

我想用它来检索文件的shell缩略图。根据MSDN文档,如果我传入一个256x256的SIZE结构,它应该用一个256x256位图填充HBITMAP参数,如果我使用SIIGBF_RESIZETOFIT标志,它应该将较小的缩略图调整为256x256。没有。结果是256x256位图,中间画了一个小图标。

好吧,也许这不是SIIGBF_Resizetoff应该做的。但是,据我所知,我应该能够使用SIIGBF_BIGGERSIZEOK并指定一个很小的大小(比如1x1),它应该返回实际的缩略图大小。没有。不管我穿什么尺码,我都会穿

我是否错误地使用了这个API,或者它只是坏了?网络上的例子似乎很少。一些讨论帖子中有人暗示API被破坏了。如果它确实已损坏,如何确定给定的shell项是否有缩略图?这样,我就可以使用此方法获取缩略图,并提取图标。

你看到了吗

我试过了,似乎效果不错,你看到了吗


我试过了,似乎效果不错

使用SIIGBF_缩略图只检查缩略图是否可用。啊,当然。。。我会试试看。另一件需要注意的事情是,API有时返回使用预乘alpha的位图,有时返回使用普通alpha的位图,但没有正确的方法(除了可能出错的启发式方法)来判断哪个位图。这是一个相当糟糕的API(使用Siigbfu thumbnail仅检查缩略图是否可用。啊,当然……我会试试。另一件需要注意的事情是,API有时返回使用预乘alpha的位图,有时返回使用普通alpha的位图,但没有正确的方法(除了可能出错的启发式方法)来区分哪个。这是一个非常糟糕的API:(是的,那是我博客的旧位置。:PYes,那是我博客的旧位置。:P