다음을 통해 공유


연습: 사용자 지정 편집기로 기능 추가

사용자 지정 편집기를 만든 후에 기능을 더 추가할 수 있습니다.

편집기는 VSPackage 만들려면

  1. Visual Studio 패키지 프로젝트 템플릿을 사용 하 여 사용자 지정 편집기를 만듭니다.

    자세한 내용은 Visual Studio 패키지 템플릿을 사용 하 여 연습: 메뉴 명령 만들기를 참조하십시오.

  2. 편집기에서 단일 보기 또는 여러 뷰를 지 원하는 지 여부를 결정 합니다.

    지 원하는 편집기를 새 창 명령, 또는 폼 보기와 코드 보기를이 고, 별도 문서 데이터 개체 및 문서 개체 보기에 필요한. 하나의 뷰만 지 원하는 편집기에서 문서 데이터 개체 및 문서 뷰 개체는 동일한 개체에서 구현할 수 있습니다.

    여러 보기의 예제를 보려면 다중 문서 뷰를 지원합니다..

  3. 편집기 팩터리를 구현 하 여 구현에 IVsEditorFactory 인터페이스입니다.

    자세한 내용은 편집기 팩터리를 참조하십시오.

  4. 편집기에서 현재 위치에서 활성화 하거나 단순화 된 포함 문서 보기 개체 창을 관리할 수 있는지 여부를 결정 합니다.

    ActiveX 컨트롤 또는 다른 액티브 문서 뷰 개체로 편집기 창 현재 위치에서 활성화를 호스팅하는 동안 간단한 포함 편집기 창 표준 문서 보기를 호스트 합니다. 자세한 내용은 간체 포함현재 위치에서 활성화을 참조하십시오.

  5. 구현에서 IOleCommandTarget 인터페이스 명령을 처리 합니다.

  6. 문서 보존 및 응답 내용 외부 파일에는 다음과 같은 방법으로 제공 합니다.

    1. 파일을 유지 하려면 구현 IVsPersistDocData2IPersistFileFormat 편집기의 문서 데이터 개체입니다.

    2. 외부 파일 변경에 응답 하려면 구현 IVsFileChangeExIVsDocDataFileChangeControl 편집기의 문서 데이터 개체입니다.

      참고

      호출 QueryService 에서 SVsFileChangeEx 에 대 한 포인터를 얻을 수 IVsFileChangeEx.

  7. 소스 코드 제어 문서 편집 이벤트를 조정 합니다. 이를 위해 다음을 수행합니다.

    1. 에 대 한 포인터를 IVsQueryEditQuerySave2 를 호출 하 여 QueryService 에서 SVsQueryEditQuerySave.

    2. 첫 번째 편집 이벤트 발생 시 호출을 QueryEditFiles 메서드.

      이 사용자가 이미 체크 아웃 않은 경우 파일을 체크 아웃 하 라는 메시지가 나타납니다. 오류를 방지 하기 위해 "체크 아웃 되지 않은 파일" 조건 처리 해야

    3. 마찬가지로, 파일을 저장 하기 전에 호출의 QuerySaveFile 메서드가 있습니다.

      이 메서드 저장 된 또는 마지막 저장 이후 변경 된 경우 파일을 저장 하 라는 메시지를 표시 합니다.

  8. 활성화는 속성 편집기에서 선택한 텍스트에 대 한 속성을 표시 하는 창입니다. 이를 위해 다음을 수행합니다.

    1. 호출 OnSelectChange 각 시간 텍스트 선택 영역을 전달의 구현에서 변경 ISelectionContainer.

    2. 호출 QueryService 에서 STrackSelection 서비스에 대 한 포인터를 얻을 수 ITrackSelection.

  9. 항목 편집기 간에 끌어서 놓기 수 있도록 하는 도구 상자, 또는 외부 편집기를 (예: Microsoft Word) 사이 고는 도구 상자. 이를 위해 다음을 수행합니다.

    1. 구현 IDropTarget IDE 편집기를 놓기 대상 임을 경고 하 여 편집기에서.

    2. 구현에서 IVsToolboxUser 인터페이스 편집기를 사용 하 고 항목을 사용 하지 수 있도록 보기에는 도구 상자.

    3. 구현 ResetDefaults 를 호출 하 고 QueryService 에서 SVsToolbox 서비스에 대 한 포인터를 얻을 수는 IVsToolbox2IVsToolbox3 인터페이스입니다.

      이 새 항목을 추가 하 여 VSPackage 있습니다 해당 도구 상자.

  10. 사용자 편집기에 대 한 다른 선택적 기능 것인지 결정 합니다.

    • 편집기를 지 원하는 데 필요한 경우 찾기 및 바꾸기 명령, 구현 IVsFindTarget.

    • 매크로 기록을 지 원하는 편집기를 사용할 경우 전화 QueryService 에 대 한 SVsMacroRecorder 에 대 한 포인터를 얻을 수 IVsMacroRecorder.

      참고

      편집기에서 지 원하는 경우 매크로 IDE를 지원 합니다.

    • 편집기에서에 문서 개요 도구 창을 사용할 경우 구현 IVsDocOutlineProvider.

    • 상태 표시줄을 편집기를 사용 하는 경우 구현 IVsStatusbarUser 를 호출 하 고 QueryService 에 대 한 SVsStatusbar 에 대 한 포인터를 얻을 수 IVsStatusBar.

      줄 편집기에 표시할 수 있습니다 예를 들어, / 열 정보를 선택 모드 (스트림 / 상자) 및 삽입 모드 (삽입 / 겹쳐서 표시).

    • 편집기를 지 원하는 데 필요한 경우는 Undo 명령을 좋습니다 OLE 실행 취소 관리자 모델을 사용 합니다. 다른 방법으로, 편집기에 대 한 핸들을 사용할 수 있습니다의 Undo 직접 명령을.

  11. Guid가 있는 VSPackage, 메뉴, 편집자 및 기타 기능을 포함 하 여 정보를 레지스트리에 만듭니다.

    다음은 올바르게 편집기를 등록 하는 방법을 보여 주기 위해.rgs 파일 스크립트를 넣습니다 코드의 일반적인 예입니다.

    NoRemove Editors
    {
          ForceRemove {...guidEditor...} = s 'RTF Editor'
          {
             val Package = s '{...guidVsPackage...}'
             ForceRemove Extensions
             {
                val rtf = d 50
             }
          }
    }
    NoRemove Menus
    {
          val {...guidVsPackage...} = s ',203,11'
    }
    
  12. 상황에 맞는 도움말 지원을 구현 합니다.

    도움말 f1 키 및 동적 도움말 창은 항목 편집기에서에 대 한 지원을 제공할 수 있습니다. 이 대 한 자세한 내용은 방법: 편집기에 대 한 컨텍스트를 제공 합니다..

  13. 자동화 개체 모델을 편집기를 구현 하 여 노출의 IDispatch 인터페이스입니다.

    자세한 내용은 자동화 모델에 기여를 참조하십시오.

강력한 프로그래밍

  • IDE 호출 하는 경우 편집기 인스턴스를 만들는 CreateEditorInstance 메서드가 있습니다. 편집기에 여러 뷰를 지 원하는 경우 CreateEditorInstance 문서 데이터와 문서 뷰 개체를 만듭니다. 문서 데이터 개체가 이미 있으면 열에 null이 아닌 punkDocDataExisting 값을 전달 된 IVsEditorFactory::CreateEditorInstance. 편집기 팩터리 구현 기존 문서 데이터 개체에 대 한 적절 한 인터페이스를 쿼리하여 호환 되는지 여부를 결정 해야 합니다. 자세한 내용은 다중 문서 뷰를 지원합니다.를 참조하십시오.

  • 포함 한 간단한 접근을 사용 하는 경우 구현에 IVsWindowPane 인터페이스입니다.

  • 현재 위치에서 활성화를 사용 하는 경우 다음과 같은 인터페이스를 구현 합니다.

    IOleObject

    IOleInPlaceActiveObject

    IOleInPlaceComponent

    참고

    IOleInPlaceComponent 인터페이스 OLE 2 메뉴 병합을 방지 하는 데 사용 됩니다.

    사용자 IOleCommandTarget 구현을 처리 명령으로 잘라내기, 복사, 및 붙여넣기. 구현할 때 IOleCommandTarget, 편집기 명령 메뉴 구조를 정의 하는 고유한.vsct 파일에 필요한 지 여부에 의해 정의 하는 표준 명령을 구현할 수 있습니다 경우 결정 Visual Studio. 일반적으로 편집기 사용 및 확장 IDE의 메뉴와 고유의 도구 모음을 정의 합니다. 그러나 편집기 IDE의 표준 명령 집합을 사용 하는 고유한 특정 명령을 정의 하는 데 필요한 경우가 많습니다. 이 위해서는 편집기 표준 명령을 사용 하 여 및 다음 새 명령, 상황에 맞는 메뉴, 최상위 수준 메뉴 및 도구 모음.vsct 파일에 정의 선언 해야 합니다. 편집기는 현재 위치에서 활성화를 만들 경우 다음 구현할 IOleInPlaceComponent 편집기에 OLE 2 메뉴 병합을 사용 하는 대신.vsct 파일에 대 한 메뉴 및 도구 모음을 정의 하 고 있습니다.

  • 메뉴 명령에서 UI를 채우고 방지 하기 위해 새 명령을 자연적 전에 기존 명령을 IDE에서 사용 해야 합니다. 공유 명령 SharedCmdDef.vsct 및 Shellcmddef.vsct에서 정의 됩니다. 이러한 파일의 VisualStudioIntegration\Common\Inc 하위 디렉터리에 기본적으로 설치 되는 Visual Studio SDK 설치.

  • ISelectionContainer단일 및 다중 선택 사항을 표현할 수 있습니다. 선택한 각 객체 구현 되는 IDispatch 개체입니다.

  • IDE를 구현 IOleUndoManager 에서 액세스할 수 있는 서비스로 CreateInstance 통해 인스턴스화할 수 있는 개체 또는 CreateInstance. 편집기를 구현 하는 IOleUndoUnit 인터페이스 각각에 대 한 Undo 작업입니다.

  • 두 곳의 사용자 지정 편집기 자동화 개체를 노출할 수 있습니다.

    • Document.Object

    • Window.Object

참고 항목

작업

방법: 편집기에 대 한 컨텍스트를 제공 합니다.

기타 리소스

자동화 모델에 기여