首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TRichEdit挂起/恢复撤消功能

TRichEdit挂起/恢复撤消功能
EN

Stack Overflow用户
提问于 2014-01-17 20:35:11
回答 2查看 571关注 0票数 4

是否有一种方法来挂起/恢复TRichEdit控件中的撤消记录?是否有要发送的消息或要设置的模式?

编辑

我用ITextDocument接口解决了这个问题。请看我下面的帖子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-18 16:18:49

好吧我解决了。

您必须使用ITextDocument接口来设置各种撤消模式。在本例中,Script_Edit是一个TRichEdit控件。

代码语言:javascript
复制
#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()可以与以下内容一起使用:

代码语言:javascript
复制
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.

我希望这对其他人也有帮助。

票数 6
EN

Stack Overflow用户

发布于 2014-01-18 01:51:55

请参阅EM_SETUNDOLIMIT消息:

设置可以存储在富编辑控件的撤消队列中的最大操作数。 参数 wParam指定可存储在撤消队列中的最大操作数。 lParam不使用此参数;它必须为零。 返回值 返回值是富编辑控件的新的最大撤消操作数。如果内存有限,此值可能小于wParam。 备注 默认情况下,撤消队列中的最大操作数为100。如果增加了这个数字,则必须有足够的可用内存来容纳新的数字。为了获得更好的性能,请将限制设置为最小的可能值。 将限制设置为零将禁用撤消功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21195367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档