IDE의 선택 및 통화
Visual Studio IDE(통합 개발 환경)는 선택 컨텍스트를 사용하여 사용자가 현재 선택한 개체에 대한 정보를 유지 관리합니다. VSPackages는 선택 컨텍스트를 사용하여 다음의 두 가지 방법으로 통화 추적에 참여할 수 있습니다.
VSPackages에 대한 통화 정보를 IDE에 전파합니다.
IDE 내에서 사용자의 현재 활성 선택 항목을 모니터링합니다.
선택 컨텍스트
Visual Studio IDE는 전역적으로 자체 글로벌 선택 컨텍스트 개체에서 IDE 통화를 추적합니다. 다음 표에서는 선택 컨텍스트를 구성하는 요소를 보여 줍니다.
요소 | 설명 |
---|---|
현재 계층 구조 | 일반적으로 현재 프로젝트입니다. NULL 현재 계층 구조는 솔루션 전체가 현재 상태임을 나타냅니다. |
현재 ItemID | 현재 계층 구조 내에서 선택한 항목입니다. 프로젝트 창에 선택 항목이 여러 개 있는 경우 현재 항목이 여러 개 있을 수 있습니다. |
현재 SelectionContainer |
속성 창에서 속성을 표시해야 하는 하나 이상의 개체를 포함합니다. |
또한 환경은 다음의 두 가지 글로벌 목록을 유지 관리합니다.
활성 UI 명령 식별자 목록
현재 활성 요소 형식의 목록
창 유형 및 선택
Visual Studio IDE는 창을 다음의 두 가지 일반 형식으로 구성합니다.
계층 구조 형식 창
프레임 창(예: 도구 및 문서 창)
IDE는 이러한 각 창 유형에 대해 통화를 다르게 추적합니다.
가장 일반적인 프로젝트 형식 창은 IDE가 제어하는 솔루션 탐색기입니다. 프로젝트 형식 창은 글로벌 선택 컨텍스트의 글로벌 계층 구조 및 ItemID를 추적하고, 창은 사용자의 선택에 의존하여 현재 계층 구조를 결정합니다. 프로젝트 형식 창의 경우 환경은 VSPackages가 열린 요소의 현재 값을 모니터링할 수 있는 글로벌 서비스 SVsShellMonitorSelection를 제공합니다. 환경에서 속성 검색은 이 글로벌 서비스로 구동됩니다.
반면 프레임 창은 프레임 창 내의 DocObject를 사용하여 SelectionContext 값(계층 구조/ItemID/SelectionContainer 트리오)을 푸시합니다. . 프레임 창은 이 목적을 위해 서비스 SVsShellMonitorSelection를 사용합니다. DocObject는 선택 컨테이너에 대한 값만 푸시할 수 있으며 MDI 자식 문서의 경우와 같이 계층 구조 및 ItemID에 대한 로컬 값은 변경되지 않은 상태로 유지합니다.
이벤트 및 통화
환경의 통화 개념에 영향을 주는 두 가지 유형의 이벤트가 발생할 수 있습니다.
전역 수준으로 전파되고 창 프레임 선택 컨텍스트를 변경하는 이벤트입니다. 이러한 종류의 이벤트의 예에는 MDI 하위 창 열기, 전역 도구 창 열기, 프로젝트 형식 도구 창 열기 등이 있습니다.
창 프레임 선택 컨텍스트 내에서 추적되는 요소를 변경하는 이벤트입니다. 예를 들어 DocObject 내에서 선택 영역을 변경하거나 프로젝트 형식 창에서 선택 항목을 변경하는 것이 있습니다.