MSHTML : MSHTML의 실행 취소 / 레디 버퍼를 어떻게 지울 수 있습니까?
-
06-07-2019 - |
문제
COM / MANIGAD MSHTML 컨트롤이 포함 된 WebBrowser 컨트롤과 유사한 C# 래퍼 컨트롤을 사용하고 있습니다. 응용 프로그램 사용자가 wysiwyg 방식으로 AA HTML 문서를 편집 할 수있는 편집 모드 에서이 컨트롤을 사용하고 있습니다.
이 컨트롤은 자체 UNDO / REDO 스택을 관리합니다.
사용자가 문서의 내용을 변경 / 실행 취소 할 수 없지만 편집 할 수 있도록 어떻게 재설정 / 지우려면 어떻게해야합니까?
해결책
MSHTML 컨트롤의 실행 취소를 지우려면 Undo Manager 서비스를 사용할 수 있습니다.
실행 취소 서비스를 활성화하고 비활성화 할 때 실행 취소 스택이 지워집니다. MSHTML의 문서 개체에서 실행 취소 관리자를 추출하려면 iserviceprovider를 사용해야합니다.
이에 대한 해결책은 다음과 같은 것입니다.
//Extract undo manager
if (m_undoManager == null)
{
IServiceProvider serviceProvider = Document as IServiceProvider;
Guid undoManagerGuid = typeof(IOleUndoManager).GUID;
Guid undoManagerGuid2 = typeof(IOleUndoManager).GUID;
IntPtr undoManagerPtr = ComSupport.NullIntPtr;
int hr = serviceProvider.QueryService(ref undoManagerGuid2, ref undoManagerGuid, out undoManagerPtr);
if ((hr == HRESULT.S_OK) && (undoManagerPtr != ComSupport.NullIntPtr))
{
m_undoManager = (IOleUndoManager)Marshal.GetObjectForIUnknown(undoManagerPtr);
Marshal.Release(undoManagerPtr);
}
}
//And to clear the stack
m_undoManager.Enable(true);
Application.DoEvents();
보다 자세한 구현과 자세한 정보는 다음을 볼 수 있습니다.
http://postxing.net:8080/postxing/tags/v1.1/postxing.htmlcomponent/html/
http://msdn.microsoft.com/en-us/library/ms678623(vs.85).aspx
제휴하지 않습니다 StackOverflow