TRichEdit приостановить / возобновить отмену функции
Есть ли способ приостановить / возобновить запись отмены в элементе управления TRichEdit? Есть ли сообщение для отправки или режим для установки?
РЕДАКТИРОВАТЬ
Я решил это с помощью интерфейса ITextDocument. Смотрите мой пост ниже.
2 ответа
Хорошо, я решил это.
Вы должны использовать 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
сообщение:
Устанавливает максимальное количество действий, которые могут храниться в очереди отмены элемента управления rich edit.
параметры
wParam Определяет максимальное количество действий, которые могут быть сохранены в очереди отмены.
lParam Этот параметр не используется; должно быть ноль.
Возвращаемое значение
Возвращаемое значение - это новое максимальное количество действий отмены для элемента управления rich edit. Это значение может быть меньше wParam, если память ограничена.
замечания
По умолчанию максимальное количество действий в очереди отмены равно 100. Если вы увеличите это число, должно быть достаточно свободной памяти для размещения нового номера. Для повышения производительности установите ограничение на минимально возможное значение.
Установка предела на ноль отключает функцию отмены.