연습: 사용자 지정 편집기로 기능 추가
사용자 지정 편집기를 만든 후에 기능을 더 추가할 수 있습니다.
편집기는 VSPackage 만들려면
Visual Studio 패키지 프로젝트 템플릿을 사용 하 여 사용자 지정 편집기를 만듭니다.
자세한 내용은 Visual Studio 패키지 템플릿을 사용 하 여 연습: 메뉴 명령 만들기를 참조하십시오.
편집기에서 단일 보기 또는 여러 뷰를 지 원하는 지 여부를 결정 합니다.
지 원하는 편집기를 새 창 명령, 또는 폼 보기와 코드 보기를이 고, 별도 문서 데이터 개체 및 문서 개체 보기에 필요한. 하나의 뷰만 지 원하는 편집기에서 문서 데이터 개체 및 문서 뷰 개체는 동일한 개체에서 구현할 수 있습니다.
여러 보기의 예제를 보려면 다중 문서 뷰를 지원합니다..
편집기 팩터리를 구현 하 여 구현에 IVsEditorFactory 인터페이스입니다.
자세한 내용은 편집기 팩터리를 참조하십시오.
편집기에서 현재 위치에서 활성화 하거나 단순화 된 포함 문서 보기 개체 창을 관리할 수 있는지 여부를 결정 합니다.
ActiveX 컨트롤 또는 다른 액티브 문서 뷰 개체로 편집기 창 현재 위치에서 활성화를 호스팅하는 동안 간단한 포함 편집기 창 표준 문서 보기를 호스트 합니다. 자세한 내용은 간체 포함 및 현재 위치에서 활성화을 참조하십시오.
구현에서 IOleCommandTarget 인터페이스 명령을 처리 합니다.
문서 보존 및 응답 내용 외부 파일에는 다음과 같은 방법으로 제공 합니다.
파일을 유지 하려면 구현 IVsPersistDocData2 및 IPersistFileFormat 편집기의 문서 데이터 개체입니다.
외부 파일 변경에 응답 하려면 구현 IVsFileChangeEx 및 IVsDocDataFileChangeControl 편집기의 문서 데이터 개체입니다.
참고
호출 QueryService 에서 SVsFileChangeEx 에 대 한 포인터를 얻을 수 IVsFileChangeEx.
소스 코드 제어 문서 편집 이벤트를 조정 합니다. 이를 위해 다음을 수행합니다.
에 대 한 포인터를 IVsQueryEditQuerySave2 를 호출 하 여 QueryService 에서 SVsQueryEditQuerySave.
첫 번째 편집 이벤트 발생 시 호출을 QueryEditFiles 메서드.
이 사용자가 이미 체크 아웃 않은 경우 파일을 체크 아웃 하 라는 메시지가 나타납니다. 오류를 방지 하기 위해 "체크 아웃 되지 않은 파일" 조건 처리 해야
마찬가지로, 파일을 저장 하기 전에 호출의 QuerySaveFile 메서드가 있습니다.
이 메서드 저장 된 또는 마지막 저장 이후 변경 된 경우 파일을 저장 하 라는 메시지를 표시 합니다.
활성화는 속성 편집기에서 선택한 텍스트에 대 한 속성을 표시 하는 창입니다. 이를 위해 다음을 수행합니다.
호출 OnSelectChange 각 시간 텍스트 선택 영역을 전달의 구현에서 변경 ISelectionContainer.
호출 QueryService 에서 STrackSelection 서비스에 대 한 포인터를 얻을 수 ITrackSelection.
항목 편집기 간에 끌어서 놓기 수 있도록 하는 도구 상자, 또는 외부 편집기를 (예: Microsoft Word) 사이 고는 도구 상자. 이를 위해 다음을 수행합니다.
구현 IDropTarget IDE 편집기를 놓기 대상 임을 경고 하 여 편집기에서.
구현에서 IVsToolboxUser 인터페이스 편집기를 사용 하 고 항목을 사용 하지 수 있도록 보기에는 도구 상자.
구현 ResetDefaults 를 호출 하 고 QueryService 에서 SVsToolbox 서비스에 대 한 포인터를 얻을 수는 IVsToolbox2 및 IVsToolbox3 인터페이스입니다.
이 새 항목을 추가 하 여 VSPackage 있습니다 해당 도구 상자.
사용자 편집기에 대 한 다른 선택적 기능 것인지 결정 합니다.
편집기를 지 원하는 데 필요한 경우 찾기 및 바꾸기 명령, 구현 IVsFindTarget.
매크로 기록을 지 원하는 편집기를 사용할 경우 전화 QueryService 에 대 한 SVsMacroRecorder 에 대 한 포인터를 얻을 수 IVsMacroRecorder.
참고
편집기에서 지 원하는 경우 매크로 IDE를 지원 합니다.
편집기에서에 문서 개요 도구 창을 사용할 경우 구현 IVsDocOutlineProvider.
상태 표시줄을 편집기를 사용 하는 경우 구현 IVsStatusbarUser 를 호출 하 고 QueryService 에 대 한 SVsStatusbar 에 대 한 포인터를 얻을 수 IVsStatusBar.
줄 편집기에 표시할 수 있습니다 예를 들어, / 열 정보를 선택 모드 (스트림 / 상자) 및 삽입 모드 (삽입 / 겹쳐서 표시).
편집기를 지 원하는 데 필요한 경우는 Undo 명령을 좋습니다 OLE 실행 취소 관리자 모델을 사용 합니다. 다른 방법으로, 편집기에 대 한 핸들을 사용할 수 있습니다의 Undo 직접 명령을.
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' }
상황에 맞는 도움말 지원을 구현 합니다.
도움말 f1 키 및 동적 도움말 창은 항목 편집기에서에 대 한 지원을 제공할 수 있습니다. 이 대 한 자세한 내용은 방법: 편집기에 대 한 컨텍스트를 제공 합니다..
자동화 개체 모델을 편집기를 구현 하 여 노출의 IDispatch 인터페이스입니다.
자세한 내용은 자동화 모델에 기여를 참조하십시오.
강력한 프로그래밍
IDE 호출 하는 경우 편집기 인스턴스를 만들는 CreateEditorInstance 메서드가 있습니다. 편집기에 여러 뷰를 지 원하는 경우 CreateEditorInstance 문서 데이터와 문서 뷰 개체를 만듭니다. 문서 데이터 개체가 이미 있으면 열에 null이 아닌 punkDocDataExisting 값을 전달 된 IVsEditorFactory::CreateEditorInstance. 편집기 팩터리 구현 기존 문서 데이터 개체에 대 한 적절 한 인터페이스를 쿼리하여 호환 되는지 여부를 결정 해야 합니다. 자세한 내용은 다중 문서 뷰를 지원합니다.를 참조하십시오.
포함 한 간단한 접근을 사용 하는 경우 구현에 IVsWindowPane 인터페이스입니다.
현재 위치에서 활성화를 사용 하는 경우 다음과 같은 인터페이스를 구현 합니다.
참고
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