博客网 >

Extend RichEdit Control
作者:分类:默认分类标签:
Extend RichEdit Control
By David.Zhu 2008/06/25


1.要实现的功能
  • 支持图片插入,支持GIF,BMP,JPG,TGA,ICO,PNG,支持动态GIF
  • 支持Clipboard操作,实现自定义剪贴板格式(xml)
  • 支持OLE Drag&Drop操作(文件,图片,文字)
  • 支持字体设置:FontName,FontSize,Bold,Italic,Underline,FontColor
  • 支持FaceTipWnd:在鼠标Hover OLE对象时显示上下文工具条
  • 支持上下文菜单
  • 支持超链接检测和点击响应
  • 支持OLE内容存储和显示
2.Introduction
    研究RichEdit的原因是因为网上RichEdit相关的资料太少了,而RichEdit却在软件开发中越来越普遍和必要, 在视频会议,网络教育,即时通讯,休闲游戏等等中你都能看到RichEdit应用的身影,RichEdit可能会和界面引擎,P2SP下载一样成为软件的一个基础核心模块。
    目前网上的关于扩展RichEdit功能主要是利用QQ的ImageOle.dll模块支持Gif/Jpeg图片动画,利用IRichEditOleCallback 支持Bitmap和其它的Ole Object.实现都比较简单。当你想继续扩展RichEdit时,比如添加FaceTipWnd,OLE拖拽...前面又是一片空白。找了本Inside Ole来看,发现这个RichEdit还真不简单,涉及到了PersistStorage,IOleObject,OLE Drag&Drop,除了Moniker,OLE的其它的技术基本都可以在RichEdit中找到相关的应用。
    网上搜了半天实在找不到有价值的RichEdit资料了,没办法只好作逆向分析。逆向分析的过程感觉就像提马铃薯,一提提出一大串,一个关联一个,时间转眼已经过去2个星期了,还是无法重构RichEdit,不知道这个模块自己有机会完成不,不过我还是希望去挑战一下的。
    从RichEdit的功能封装来看,主要分为三个层次:第一层为核心功能层,主要提供RichEdit所支持的各种对象的插入和实现自定义剪贴板格式;第二层主要在第一层基础上添加了WM_RBUTTONUP消息的响应,实现了右键上下文菜单和菜单命令的响应;第三层在第二层的基础上继续集成了FaceListTip和FaceTipWnd的显示逻辑。另外提供的几个类实现了RichText到Html的转换,将RichEdit里面的内容用CSS+HTML进行描述,这个方法用来实现RichEdit内容的存储。

3.Release History
    None.

4.Reference
<< 探究视频加速器的原理 / NewSkin V0.3发布 >>

专题推荐

不平凡的水果世界

不平凡的水果世界

平凡的水果世界,平凡中的不平凡。 今朝看水果是水果 ,看水果还是水果 ,看水果已不是水果。这境界,谁人可比?在不平凡的水果世界里,仁者见仁,智者见智。

中国春节的那些习俗

中国春节的那些习俗

正月是农历新年的开始,人们往往将它看作是新的一年年运好坏的兆示期。所以,过年的时候“禁忌”特别多。当然,各个地方的风俗习惯不一样,过年的禁忌也是不一样的。

评论
0/200
表情 验证码:

David.Zhu

  • 文章总数0
  • 画报总数0
  • 画报点击数0
  • 文章点击数0
个人排行
        博文分类
        日期归档