我们在脚本编辑器中使用Richedit 2.0,它可以在您键入时自动进行多级撤消和重做。当我们想要构建脚本或脚本打开时,我重新格式化文本并通过WM_SETTEXT将其发送到富编辑控件。这会清除撤消缓冲区。
我如何才能得到它,以便在重新格式化我的脚本之后我仍然可以按下CTRL-Z,它将返回到之前的文本,之前的文本,在我重新格式化之前?我不知道richedit如何保存undos,但是当我执行WM_SETTEXT并且在我这样做之前存储撤销点时,它似乎只需要一种不清除撤消缓冲区的方法。这可能吗?
由于
Shaun Southern答案 0 :(得分:2)
使用EM_REPLACESEL
和WPARAM
设置为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");