有没有办法暂停/恢复 TRichEdit 控件中的撤消记录?是否有要发送的消息或要设置的模式?
编辑
我已经通过使用 ITextDocument 接口解决了它。请看我下面的帖子。
有没有办法暂停/恢复 TRichEdit 控件中的撤消记录?是否有要发送的消息或要设置的模式?
编辑
我已经通过使用 ITextDocument 接口解决了它。请看我下面的帖子。
好的,我解决了。
您必须使用该ITextDocument
界面来设置各种撤消模式。在这个例子Script_Edit
中是一个TRichEdit
控件。
#include <Richole.h>
#include <Tom.h>
// Define the ITextDocument interface GUID
#define DEFINE_GUIDXXX(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID CDECL name \
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
DEFINE_GUIDXXX(IID_ITextDocument,0x8CC497C0,0xA1DF,0x11CE,0x80,0x98,
0x00,0xAA,0x00,0x47,0xBE,0x5D);
IRichEditOle *IRich;
ITextDocument *IDoc;
// Get the IRichEditOle interface object
SendMessage(Script_Edit->Handle,EM_GETOLEINTERFACE,0,(LPARAM)&IRich);
// Get the ITextDocument interface
IRich->QueryInterface(IID_ITextDocument,(void**)&IDoc);
// Suspend the Undo recording
IDoc->Undo(tomSuspend,NULL);
... Do your stuff ...
// Resume the Undo recording
IDoc->Undo(tomResume,NULL);
// Release the interfaces
IDoc->Release();
IRich->Release();
可ITextDocument->Undo()
用于:
ITextDocument->Undo(tomFalse, NULL); //Prevents Undo and empties buffer.
ITextDocument->Undo(tomTrue, NULL); //Restarts Undo again.
ITextDocument->Undo(tomSuspend, NULL); //Suspends Undo.
ITextDocument->Undo(tomResume, NULL); //Resumes Undo.
我希望这对其他人也有用......
查看EM_SETUNDOLIMIT
消息:
设置可以存储在富编辑控件的撤消队列中的最大操作数。
参数
wParam 指定可以存储在撤消队列中的最大操作数。
lParam 该参数不使用;它必须为零。
返回值
返回值是富编辑控件的新的最大撤消操作数。如果内存有限,此值可能小于 wParam。
评论
默认情况下,撤消队列中的最大操作数为 100。如果增加此数量,则必须有足够的可用内存来容纳新数量。为了获得更好的性能,请将限制设置为可能的最小值。
将限制设置为零会禁用撤消功能。