richeidt 控件開發(二)
来源:互联网 发布:matlab矩阵符号运算 编辑:程序博客网 时间:2024/05/22 13:38
两个月的时间开发个richedit还是挺有挑战的,其实开发一个基本能用的还是可以的,但是要开发一个高效的还是比较有挑战。
开始构想整体思路,借鉴别人的的建议就是基于一行一行的绘画,那么从这个思路入手,整篇文档即是被分为N行,每一行里面有具体的内容,如果读到'\n'那么直接新建一行,否则自动换行,每一行可划分为若干个子段,每一个字段对应一个高度height和一个宽度width或者字符数charCount,行对象包含最大高度、宽度、起点在文章中的pos、终点在文章中的pos;整篇文章可以看作是一个长字符串,这个长字符串可分为N个具备相同charformat(文本格式)的小段,通过维护一个style列表可以知道每一个pos对应的文本格式是怎样的;也就是我们可以这样假设:1~20个字符里面,我们把它瓜分为四个属性1~6是文本格式1,7~9是文本格式2,10~15是文本格式3,16~18是文本格式4,19~20是文本格式5,那么我们就可以存放一个vector,保存<1,文本格式1>,<7,文本格式2>,<10,文本格式3>,<16,文本格式4>,<19,文本格式5>,我们可以通过二分查找的方法找到一个position对应的的文本格式,这样就解决了绘画每个line的时候对应的style的问题。
照这样的思路,我们可以定义出以下对象:
LineObjManager:LineObjList_;
LineObj:maxHeight_,width_,beginPos_,endPos_;
StyleListManager:StyleList_;
现在遇到一个问题是文章中是文字和图片混合,应该如何处理?莫非维护一个ImageObj表,并在绘画line的时候检测是否有image应该要插入?
ImageObjManager:imageMap_;(<pos,imageObj>)
2012-02-10:想想應該把imageobj直接放在LineObj裏面,裏面包含一個imagelist。
歡迎大俠們來批評指教哦
- richeidt 控件開發(二)
- richeidt 控件開發(一)
- richeidt 控件開發(三)
- richeidt 控件開發(四)
- richeidt 控件開發(五)
- richeidt 控件開發(六)
- richeidt 控件開發(七)
- richeidt 控件開發(八)
- MFC 中初始化RichEidt控件
- Richeidt一般性问题
- dijit控件(二)
- 自定义控件(二)
- 自定义控件(二)
- Android自定义控件(二)组合控件
- 自定义控件(二)--复合控件
- 自定义控件二(创建复合控件)
- DataGrid控件(二)--分页
- 编辑DataGrid控件(二)
- Memcached item长度计算
- oracle多表连接
- linux命令行终端的翻屏滚屏more/less/head/tail
- Sicily 2503. 最长字符串
- jdbc增删改查
- richeidt 控件開發(二)
- 给定正整数 N, 求使N < 2^m 成立的最小m(C语言版)
- Sicily 3702. 二叉搜索树的遍历
- Sicily 3703. Huffman Coding V1
- 设计者的职责
- 计算Pi(1)
- Sicily 3825. AVL Tree
- jdbc防止sql注入学习记录
- LUA函数简介