首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

SDK方式编写文本编辑器(不使用控件)解决方案

2012-04-23 
SDK方式编写文本编辑器(不使用控件)最近接到一个任务,用SDK(c)写一个文本编辑器,不可以使用控件.实现基本

SDK方式编写文本编辑器(不使用控件)
最近接到一个任务,用SDK(c)写一个文本编辑器,不可以使用控件.
实现基本功能:打开,新建,保存,拷贝,剪切,粘贴,撤销(ctrl-z),查找,替换,自动换行.

经过这两天的研究有点头绪,但是还有一些问题,希望能得到大家的帮助.

最主要的问题就是数据的存储--数据结构问题
我自己想的是用二维数据+指针数组,或者是用结构
struct data
{
  int linenumber;
  char str[1024];
};

我的邮箱:paper-0424@163.com
如果哪位有相关的例子,方便的话请传一份给我参考.谢谢啦.

有适合的答案会加分:)

[解决办法]
struct data 

int linenumber; 
char str[1024]; 
}; 

这样有点浪费空间吧?

这个editor用一个

char* buffer

通过别的方式确定一个字符的行和列

比如你可以记下每一行的起始字符index等等


[解决办法]
以前自己写过C语言的编辑器,采用的数据结构是:
横着是分块的连接表,竖着是一个双向链表。
如图: 
 ___ __________
| |____| |______.........
|__| |_________|
 ||
_||_ __________ ___________
| |____| |______| | 
|__| |_________| |_________|_
[解决办法]
用双向链表保存数据。

一段一个对象,一个段内分多个数据块。
数据块的原则是,设定一个最大和最小值,数据块不能小于最小值,也不能大于最大值。
提供数据块整理功能。(这样可以保证效率)

当然也会有例外,比如,一个超小的数据块,卡在两个临近最大值的数据块之间。



撤消的话,就是command模式。这个问题需要好好设计,
可能的command只不过就是
插入
删除
修改

为了提高效率,要限制command链表的长度。
[解决办法]
Win2000泄露出去的代码中有 notepad

热点排行
Bad Request.