在即时通讯软件中加入动态的表情,能给交谈添加较强的趣味性,效果在有些时候是文字很难达到的。目前的即时通讯工具中几乎都支持动态表情,比如MSN,QQ等。在windows平台下,实现起来比较容易。能够通过重用windows提供的功能,采用VC比较简单的实现有两种:用RichEdit控件和WebBrowser控件这两种方式。下面分析如何实现,并给出实现的代码。
动态表情一般是通过显示GIF动画或者动画序列来实现的。RichEdit控件本身是一个容器对象,支持插入OLE对象。通过插入支持动态显示GIF或动画序列的OLE对象,就可以实现在RichEdit中插入动态表情,比如QQ就是采用的这种方式。这种类型的OLE对象实现起来有一定的难度,主要是对系统资源占用太厉害,在插入少量GIF后,CPU的占用率太高。针对这个问题,我实现了一个支持GIF动画的控件,在CPU占用率方面做了一定的优化,对于普通的聊天,CPU的占用率还算比较低。
对于如何在RichEdit控件中插入一个OLE对象,在我的另一篇文章中有详细的代码和注释,如何实现这种类型的OLE对象也有比较详细的分析,在此不再重复。
下面详细讨论第二种方式:通过WebBrowser控件来实现更加丰富的表情。
WebBrowser控件是以OLE方式使用IE提供的功能,能够显示丰富的网络UI元素,包括GIF,Flash等多种,可以提供和网页一样丰富的图形界面。在VC中,创建一个WebBrowser控件,然后通过动态的插入Html文本,就可以实现了。
在这里我们用VC提供的模板类CHtmlEditCtrlBase<>,定义一个CmyHtmlEditCtrl类,来实现动态的更新和显示Html文档,为了简单起见,我直接拷贝了CHtmlEditCtrl的定义和实现。具体的定义如下:(未完待序)
本文地址:http://com.8s8s.com/it/it360.htm