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