在WM_SETTEXT之后,Richedit 2.0撤消

时间:2014-07-09 14:27:50

标签: winapi undo richedit

我们在脚本编辑器中使用Richedit 2.0,它可以在您键入时自动进行多级撤消和重做。当我们想要构建脚本或脚本打开时,我重新格式化文本并通过WM_SETTEXT将其发送到富编辑控件。这会清除撤消缓冲区。

我如何才能得到它,以便在重新格式化我的脚本之后我仍然可以按下CTRL-Z,它将返回到之前的文本,之前的文本,在我重新格式化之前?我不知道richedit如何保存undos,但是当我执行WM_SETTEXT并且在我这样做之前存储撤销点时,它似乎只需要一种不清除撤消缓冲区的方法。这可能吗?

由于

Shaun Southern

1 个答案:

答案 0 :(得分:2)

使用EM_REPLACESELWPARAM设置为TRUE启用撤消选项。例如:

//select the whole range to simulate `WM_SETTEXT`
SendMessage(handle, EM_SETSEL, (WPARAM)0, (LPARAM)-1);

//replace text
SendMessage(handle, EM_REPLACESEL, TRUE, (WPARAM)L"Text");