March 24
不过,美中不足的是里面用的是第三方(腾讯Tecent)的OLE库ImageOle.dll,该库只支持Bmp、Gif、Jpg格式的图片,没有办法扩展。所以我就打算写一个自己的OLE库,来支持我想要显示的图片。那么还等什么?现在就开始吧。
首先,打开VC,新建一个DLL的ATL工程,然后Insert一个至少包含IViewObject、IOleObject、IOleControl的ALT对象,当然你也可以直接选Full的对象,名字你可以自己决定。添加一个接口LoadFromFile来读取图片到内存中。然后在ATL的OnDraw函数把图片画出来,至于怎么画,和用什么画可以看个人的喜好了。比如用第三方开源的库,或则GDI或GDI+都可以,不过这只是处理静态的图片。
其次处理动态图片比如GIF文件,可以采用ATL对象拥有句柄,然后再句柄的OnTimer事件中处理,也可以不用定时器,开启一个线程,在线程中用等待事件的方式。
最后,测试和修正其它的小问题。如果你有一定ATL功底的话,就会发现挺简单的吧。编译和注册了我们自己的OLE控件后,使用方法和上面提到的参考文章一样,就没什么问题了。