King's profile孤独的夜PhotosBlogLists Tools Help

King Wang

Occupation

孤独的夜

March 24

RichEdit中显示GIF和其它图片

       网上有不少文章介绍了如何在RichEdit控件中显示Bmp,但是显示其它格式的却很难找到。当然像CodeProject的dTianx兄提供了一篇可以参考的文章:http://www.codeproject.com/richedit/AnimatedEmoticon.asp
不过,美中不足的是里面用的是第三方(腾讯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控件后,使用方法和上面提到的参考文章一样,就没什么问题了。
 
 
Photo 1 of 10
More albums (1)
There are no music lists on this space.