MFC ActiveX 컨트롤: 앰비언트 속성에 액세스
ActiveX 컨트롤은 컨트롤 컨테이너의 앰비언트 속성에 액세스 하는 방법에 대해 설명 합니다.
컨트롤 컨테이너의 앰비언트 속성에 액세스 하 여 해당 컨테이너에 대 한 정보를 얻을 수 있습니다.이러한 속성 컨테이너의 배경색, 컨테이너 및 작업 특성으로 컨테이너가 현재 사용자 모드 또는 디자이너 모드 인지 여부 등을 사용 하는 현재 글꼴 같은 시각적 특성을 노출 합니다.컨트롤의 모양과 동작에 포함 된 특정 컨테이너에 맞게 앰비언트 속성을 사용할 수 있습니다.그러나 컨트롤은 절대로 컨테이너는 앰비언트 속성을 지 원하는 것으로 가정해 야 합니다.사실, 일부 컨테이너는 앰비언트 속성을 전혀 지원 하지 않습니다.앰비언트 속성이 없을 경우 컨트롤은 적절 한 기본값을 가정해 야 합니다.
앰비언트 속성에 액세스 하려면 호출 COleControl::GetAmbientProperty.이 함수는 첫 번째 매개 변수 (olectl. 앰비언트 속성에 대 한 디스패치 ID를 필요로H는 표준 앰비언트 속성 집합에 대 한 디스패치 Id 정의).
매개 변수는 GetAmbientProperty 함수는 디스패치 ID를 예상된 속성 형식 및 메모리에 대 한 포인터를 나타내는 variant 태그 위치는 값이 반환 됩니다.이 포인터가 참조 하는 데이터 형식을 변형 태그에 따라 달라 집니다.함수 반환 TRUE 속성을 지 원하는 컨테이너 iferror FALSE.
다음 코드 예제는 "UserMode" 라는 앰비언트 속성의 값을 가져옵니다. 속성 값의 기본 컨테이너에서 지원 되지 않습니다 경우 TRUE 간주 됩니다.
BOOL bUserMode;
if(!GetAmbientProperty( DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;
사용자의 편의 위해 COleControl 속성을 사용할 수 없는 경우 적절 한 기본값을 반환 하 고 대부분의 자주 사용 하는 앰비언트 속성에 액세스 하는 도우미 함수를 제공 합니다.이러한 도우미 함수는 다음과 같습니다.
-
[!참고]
호출자 호출 해야 Release () 에서 반환 되는 글꼴입니다.
(일부 동작의 컨테이너를 통해), 앰비언트 속성의 값을 변경 하는 경우는 OnAmbientPropertyChanged 컨트롤의 멤버 함수를 호출 합니다.이러한 알림 메시지를 처리 하려면이 멤버 함수를 재정의 합니다.매개 변수에 대해 OnAmbientPropertyChanged 영향을 받는 앰비언트 속성의 디스패치 ID입니다.이 디스패치 ID의 값이 될 수 있습니다 DISPID_UNKNOWN, 앰비언트 속성을 하나 이상 변경 되었습니다, 하지만 되었습니다 속성의 영향에 대 한 정보를 사용할 수 없습니다 나타냅니다.