windows sdk 编程系列文章 ---- RichEdit 控件基础知识之二
设置正文/保存正文
对于那些经常使用 Edit 控件的人来说,你们肯定对使用 WM_GETTEXT /
WM_SETTEXT 来设置 / 保存 控件中的正文的方法很熟悉。这个方法对 RichEdit 仍然
适用,但是如果文件很大的话这个方法不再是最有效的。 Edit 控件限制了正文长度,可
以输入最多 64K 的正文。但是 RichEdit 控件可以接受比这个限制大的多的正文数据。要
分配一个很大的内存块 ( 譬如大约 10MB ) 来接受来自来自 WM_GETTEXT 消息的正文
是一件很麻烦的事 . Richedit 控件为此提供了一个新的方法,就是 正文流( Text
Streaming )。
要设置 RichEdit 文本,你只需给 RichEdit 简单的提供一个回调函数的地址,当一
切准备好时, RichEdit 会调用回调函数,并将正文缓冲区的地址传递给它。回调函数会
将要发送给 RichEdit 的数据填入缓冲区或者将缓冲区的数据读出,然后等待下一次调用
自到操作完成。 范例程序是流入(设置正文)和流出(取出正文)两者的例子。你将会发
现这个方法更加有效:这个缓冲区是 RichEdit 控件自己提供的,因此数据被分成了几个
大块。这个操作包括两条消息 : EM_STREAMIN 和 EM_STREAMOUT 。
EM_STREAMIN 和 EM_STREAMOUT 两者使用同一个语法 :
wParam == 格式选项 .
SF_RTF
数据是 RTF 格式。
SF_TEXT
数据是简单正文格式。
SFF_PLAINRTF
只有那些对所有语系都共有的关键词才流
入。
SFF_SELECTION
如果指定这个标志,流操作的目标就是当前
选定的正文。如果你将正文流入,当前正文
就会被替换,如果是流出,则只有那些当前
选定的正文才流出。如果没有指定这个标
志,操作就会影响到控件中的所有正文。
SF_UNICODE
(RichEdit 2.0 或更高版本才提供)指定的
是 Unicode 正文。
lParam == 指向一个 EDITSTREAM 结构,该结构定义如下:
typedef struct _editstream {
DWORD_PTR dwCookie;
DWORD dwError;
EDITSTREAMCALLBACK pfnCallback;
评论0
最新资源