다음을 통해 공유


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

편집기에 대 한 컨텍스트는 편집기에 포커스가 있는 도구 창에 포커스가 이동 된 즉시 하기 전에 포커스가 있던 때만 활성화 됩니다. 다음을 수행 하 여 편집기에 대 한 컨텍스트를 제공할 수 있습니다.

  1. 컨텍스트 모음을 만듭니다.

  2. 컨텍스트 모음 선택 요소 식별자 (SEID)에 게시 합니다.

  3. 주머니에서 유지 관리 합니다.

다음 절차에서이 작업에 설명 합니다. 컨텍스트를 제공 하는 방법에 대 한 자세한 내용은 참조 하십시오. 강력한 프로그래밍 이 항목의 뒷부분에 나오는.

편집기 또는 디자이너에 대 한 컨텍스트 모음을 만들려면

  1. 호출 QueryServiceIServiceProvider 의 인터페이스는 SVsMonitorUserContext 서비스.

    에 대 한 포인터를 IVsMonitorUserContext 인터페이스가 반환 됩니다.

  2. 호출 하는 CreateEmptyContext 새 컨텍스트 또는 하위 컨텍스트로 가방을 만드는 방법입니다.

    에 대 한 포인터를 IVsUserContext 인터페이스가 반환 됩니다.

  3. 호출 하는 AddAttribute 컨텍스트 또는 하위 컨텍스트로 가방을 특성, 조회 키워드 또는 F1 키워드 사용 합니다.

  4. 호출 컨텍스트로 가방을 만드는 경우는 AddSubcontext 메서드가 하위 컨텍스트로 가방 상위 컨텍스트 모음에 연결 합니다.

  5. 호출 AdviseUpdate 알림을 받을 때의 동적 도움말 창인 업데이트할.

    것은 동적 도움말 호출을 편집기 창을 업데이트할 준비가 되어 컨텍스트 변경 하는 업데이트를 발생할 때까지 연기할 수 있습니다. 이 방법은 시간이 많이 걸리는 알고리즘 시스템 유휴 시간이 있을 때까지 실행을 지연 시킬 수 있기 때문에 성능이 향상 됩니다.

컨텍스트 모음 SEID에 게시 하려면

  1. 호출 QueryService 에 있는 SVsTrackSelectionEx 서비스에 대 한 포인터를 반환 하는 IVsTrackSelectionEx 인터페이스.

  2. 호출 OnElementValueChange, 요소 식별자를 지정 하 (elementid 매개 변수) 값을 글로벌 수준으로 컨텍스트를 전달 하 고 나타내기 위해 SEID_UserContext.

  3. 값 편집기 또는 디자이너가 활성화 되 면, 해당 IVsTrackSelectionEx 개체를 전체 선택 영역에 전파 됩니다. 세션 당 한 번만이 작업을 완료 하 고 다음을 호출 하면 만들어진 전역 컨텍스트 포인터를 저장 하기만 하면 OnElementValueChange.

컨텍스트 모음 유지 하기 위해

  1. 구현 IVsUserContext 확인 하는 동적 도움말 창 호출 편집기 또는 디자이너를 업데이트 하기 전에.

    호출 된 각 컨텍스트 모음에 대 한 AdviseUpdate 컨텍스트 모음을 만들고 구현한 후 IVsUserContextUpdate, IDE 호출 UpdateUserContext 컨텍스트 공급자 컨텍스트 모음 업데이트 됨을 알리는. 이 전화를 사용 하 여 전에 특성 및 컨텍스트 모음 및 모든 하위 컨텍스트로 가방에서 키워드를 변경 하는 동적 도움말 창이 업데이트 됩니다.

  2. 호출 SetDirty 에서 편집기 또는 디자이너에 새 컨텍스트 있음을 나타내는 컨텍스트 모음입니다.

    경우는 동적 도움말 창 호출 UpdateUserContext 표시를 업데이트 하 고, 편집기 또는 디자이너에 맞는 상위 컨텍스트 모음 및 모든 하위 컨텍스트로 가방 모두에 대해 적절 하 게 업데이트할 수 있습니다.

    참고

    SetDirty 플래그가 자동으로 설정 되어 true 컨텍스트 추가 또는 컨텍스트 모음에서 제거할 때마다.해당 동적 도움말 창을 호출 하는 UpdateUserContext 컨텍스트 모음에 경우는 SetDirty 플래그가 설정 되어 true.으로 다시 설정 됩니다 false 업데이트 후.

  3. 호출 AddAttribute 컨텍스트를 활성 컨텍스트 컬렉션에 추가 하려면 또는 RemoveAttribute 컨텍스트를 제거 합니다.

강력한 프로그래밍

다음 사용자 편집기를 작성 하는 경우 세 가지 편집기에 대 한 컨텍스트를 제공 하는이 항목의 절차를 완료 해야 합니다. 자세한 내용은 Editor Design Decisions를 참조하십시오.

참고

제대로 된 편집기 또는 디자이너 창으로 전환 하 고 명령 라우팅 올바르게 업데이트 되도록 하려면 호출 해야 Show 구성 요소의 포커스 창 할.

SEID는 선택에 따라 변경 하는 속성의 컬렉션입니다. SEID 정보를 통해 전역 선택 가능합니다. 전역 선택으로 트리거되는 이벤트에 연결 되어 있는 IVsTrackSelectionEx 인터페이스를 (현재 편집기, 도구 창 현재, 현재 계층 등) 된 모든 항목의 목록을 선택 했습니다.

편집기 및 디자이너에 대 한 컨텍스트 때마다 변경할 수 있습니다 커서 이동 단어 안에 컨텍스트 모음을 지속적으로 업데이트 하는 것은 비효율적입니다. 편집기 또는 디자이너 창 내에서 이동 하는 커서를 검색할 때마다 보다 효율적으로 업데이트 하려면 호출할 수 SetDirty. 이 사용 하면 IDE의 컨텍스트 서비스 알림 편집기 또는 디자이너를 보내는입니다 유휴 시간까지 컨텍스트 변경 내용을 저장 하는 동적 도움말 창을 업데이트 하 고 있습니다. 이 방법은이 항목의 "컨텍스트 모음 유지 하려면" 절차에서 사용 됩니다.

편집기 또는 디자이너에서 작업에 대 한 컨텍스트를 입력 한 후, 편집기 또는 디자이너 자체에 대 한 도움말을 볼 수 있게 하려면 특정 F1 키워드를 제공 해야 합니다.

참고 항목

참조

OnElementValueChange

AddAttribute

AdviseUpdate

RemoveAttribute

SetDirty

IVsUserContextUpdate

UpdateUserContext

Show

SVsTrackSelectionEx