다음을 통해 공유


MFC ActiveX 컨트롤: 앰비언트 속성 액세스

이 문서에서는 ActiveX 컨트롤이 해당 컨트롤 컨테이너의 앰비언트 속성에 액세스하는 방법을 설명합니다.

컨트롤은 컨테이너의 앰비언트 속성에 액세스하여 컨테이너에 대한 정보를 가져올 수 있습니다. 이러한 속성은 컨테이너의 배경색, 컨테이너에서 사용하는 현재 글꼴, 컨테이너가 현재 사용자 모드 또는 디자이너 모드에 있는지 여부와 같은 운영 특성과 같은 시각적 특성을 노출합니다. 컨트롤은 앰비언트 속성을 사용하여 모양과 동작을 포함된 특정 컨테이너에 맞게 조정할 수 있습니다. 그러나 컨트롤은 해당 컨테이너가 특정 앰비언트 속성을 지원한다고 가정해서는 안 됩니다. 실제로 일부 컨테이너는 앰비언트 속성을 전혀 지원하지 않을 수 있습니다. 앰비언트 속성이 없는 경우 컨트롤은 적절한 기본값을 가정해야 합니다.

앰비언트 속성에 액세스하려면 COleControl::GetAmbientProperty를 호출 합니다. 이 함수는 앰비언트 속성에 대한 디스패치 ID를 첫 번째 매개 변수(파일 OLECTL)로 예상합니다. H는 표준 앰비언트 속성 집합에 대한 디스패치 ID를 정의합니다).

함수의 GetAmbientProperty 매개 변수는 디스패치 ID, 예상된 속성 형식을 나타내는 변형 태그 및 값을 반환해야 하는 메모리에 대한 포인터입니다. 이 포인터가 참조하는 데이터 형식은 변형 태그에 따라 달라집니다. 컨테이너가 속성을 지원하는 경우 함수는 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.

다음 코드 예제에서는 "UserMode"라는 앰비언트 속성의 값을 가져옵니다. 컨테이너에서 속성을 지원하지 않는 경우 TRUE기본값은 다음과 같습니다.

BOOL bUserMode;
if (!GetAmbientProperty(DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;

편의 COleControl 를 위해 일반적으로 사용되는 많은 앰비언트 속성에 액세스하고 속성을 사용할 수 없는 경우 적절한 기본값을 반환하는 도우미 함수를 제공합니다. 이러한 도우미 함수는 다음과 같습니다.

컨테이너 OnAmbientPropertyChanged 의 일부 동작을 통해 앰비언트 속성 값이 변경되면 컨트롤의 멤버 함수가 호출됩니다. 이러한 알림을 처리하도록 이 멤버 함수를 재정의합니다. 매개 OnAmbientPropertyChanged 변수는 영향을 받는 앰비언트 속성의 디스패치 ID입니다. 이 디스패치 ID의 값은 하나 이상의 앰비언트 속성이 변경되었지만 영향을 받은 속성에 대한 정보를 사용할 수 없음을 나타내는 DISPID_UNKNOWN 수 있습니다.

참고 항목

MFC ActiveX 컨트롤