windows 7下WIC编程

最近用VC开发一个软件,要用到WIC (windows图像处理组件)。程序写到一半,突然发现,在win10下一切正常(我有机器装的是windows10),但到了win7下就无法运行了,初始化wic时报错,组件未注册。未注册,那就是未安装嘛,马上下载WIC,安装。报错了,“安装程序不能找到用来更新的系统的update.inf”。 上百度,结果如下:

程序必须能在WIN7下运行,这个不能变。不用WIC,用其它的方案整个程序就得全部重写。有种绝望的感觉。

想想不对劲,win7是支持Direct2d的,在Direct2d下不用WIC没法处理图片啊。进入win7的system32目录下,发现WindowsCodecs.dll文件存在,在注册表中查找这个文件,也能查到与之相关的CLSID。那说明win7下有WIC,是不是调用方式不一样?

查看代码,初始化IWICImagingFactory使用的CLSID预定议常量是CLSID_WICImagingFactory,查看这个预定义常量的声明,马上就发现问题了。

CLSID_WICImagingFactory默认指向了 CLSID_WICImagingFactory 2 除此之外还有个 CLSID_WICImagingFactory 1。在注册表中查相应的CLSID值,windows10中 1和2都有,windows7中只有1。 加了个判断,如果用2初始化失败,尝试用1再初始化一次。 编译,在win7下运行,成功!!!!!

Loading

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注