2008-11-05 3 views
1

COM/관리되지 않는 MSHTML 컨트롤이 포함 된 WebBrowser 컨트롤과 비슷한 C# 래퍼 컨트롤을 사용하고 있습니다. 이 컨트롤을 편집 모드에서 사용하면 응용 프로그램 사용자가 HTML 문서를 WYSIWYG 방식으로 편집 할 수 있습니다.MSHTML : MSHTML의 실행 취소/다시 실행 버퍼를 지우는 방법

이 컨트롤은 자신의 실행 취소/다시 실행 스택을 관리합니다.

사용자가 문서 내용의 변경을 다시 시도하거나 취소 할 수 없도록 수정/삭제할 수있는 방법은 무엇입니까?

답변

3

MSHTML 컨트롤의 실행 취소 스택을 지우려면 실행 취소 관리자 서비스를 사용할 수 있습니다.
실행 취소 서비스를 활성화 및 비활성화하면 실행 취소 스택이 지워집니다. MSHTML의 Document 개체에서 실행 취소 관리자를 추출하려면 IServiceProvider를 사용해야합니다.

이에 대한 해결책은 어떤 것을 같은 :

http://postxing.net:8080/PostXING/tags/v1.1/PostXING.HtmlComponent/Html/

http://msdn.microsoft.com/en-us/library/ms678623(VS.85).aspx

:

//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(); 

은 더 자세한 구현 및 자세한 내용은에서 볼 수있다