다음을 통해 공유


메시지 처리 및 명령 대상

명령 디스패치 인터페이스 IOleCommandTarget 쿼리 및 명령을 실행 하는 간단 하 고 확장 가능한 메커니즘을 정의 합니다.이 메커니즘은 자동화 보다 간단 IDispatch ; 명령의 표준 집합을 하므로 명령을 거의 인수 및 형식 정보가 포함 된 (형식 안전성이 명령 인수에 대해 감소 됩니다).

각 명령 "자체적으로 식별 되는 명령 그룹" 명령 디스패치 인터페이스 디자인에 속해 있는 GUID.따라서 누구나 새 그룹을 정의 하 고 필요가 좌표와 Microsoft 나 다른 공급 업체 없이 해당 그룹 내의 모든 명령을 정의할 수 있습니다.(동일한 의미의 정의로 기본적으로는 dispinterfaceDispid 자동화에서.여기에서 중복 라우팅 메커니즘이이 명령 스크립트/프로그래밍은 대규모의 명령 라우팅에 대 한 자동화 핸들로 이지만.)

IOleCommandTarget다음과 같은 시나리오를 처리합니다.

  • 원위치 개체의 도구 모음에는 일반적으로 표시 되 고 개체의 도구 모음 단추 같은 컨테이너 명령 중 일부를 해야만 활성화 되 면 개체 인쇄, 인쇄미리 보기, 저장, New, 확대/축소, 및 다른 사람.(표준 권장 제거 개체를 현재 위치에서 활성화 이러한 단추를 도구 모음 또는 적어도 비활성화 합니다.이 디자인을 활성화 하 고 아직 적합 한 처리기로 전달 된 명령이 있습니다.) 현재이 명령을 컨테이터 디스패치 개체에 대 한 메커니즘이입니다.

  • 액티브 문서 (예: Office 바인더) 액티브 문서 컨테이너에 포함 되 면 컨테이너 명령을 이러한 보내야 할 수도 있습니다 인쇄, 페이지설치, 속성이, 및 다른 사람에 게 포함 된 액티브 문서.

이 간단한 명령 라우팅을 통해 기존의 자동화 표준 처리할 수 및 IDispatch.그러나 오버 헤드가 관련 IDispatch 여기서는 필요한 것 보다 더 있으므로 IOleCommandTarget 같은 목적을 달성 하기는 단순한 수단을 제공:

interface IOleCommandTarget : IUnknown

{

HRESULT QueryStatus(

[in] GUID *pguidCmdGroup,

[in] ULONG cCmds,

[in,out][size_is(cCmds)] OLECMD *prgCmds,

[in,out] OLECMDTEXT *pCmdText);

HRESULT Exec(

[in] GUID *pguidCmdGroup,

[in] DWORD nCmdID,

[in] DWORD nCmdExecOpt,

[in] VARIANTARG *pvaIn,

[in,out] VARIANTARG *pvaOut);

}

QueryStatus 여기 메서드 집합 식별 하 고 특정 명령 집합을, 여부를 테스트 한 GUID, 지원 됩니다.이 호출은 배열을 채웁니다 OLECMD 명령 및/또는 상태 정보의 이름을 설명 하는 텍스트를 반환 뿐만 아니라 명령 목록과 지원 되는 값 (구조).명령을 호출 하는 호출자를 원할 때에 명령을 전달할 수 있습니다 (및 집합 GUID)를 Exec 옵션과 인수 함께 반환 값을 다시 가져오는 것입니다.

참고 항목

개념

액티브 문서 컨테이너