Kontrolki ActiveX MFC: uzyskiwanie dostępu do właściwości otaczających

W tym artykule omówiono, jak kontrolka ActiveX może uzyskiwać dostęp do właściwości otoczenia kontenera sterowania.

Kontrolka może uzyskać informacje o kontenerze, uzyskując dostęp do właściwości otoczenia kontenera. Te właściwości uwidaczniają cechy wizualne, takie jak kolor tła kontenera, bieżąca czcionka używana przez kontener i cechy operacyjne, takie jak to, czy kontener jest obecnie w trybie użytkownika, czy w trybie projektanta. Kontrolka może używać właściwości otoczenia, aby dostosować jej wygląd i zachowanie do określonego kontenera, w którym jest osadzony. Jednak kontrolka nigdy nie powinna zakładać, że jego kontener będzie obsługiwać dowolną konkretną właściwość otoczenia. W rzeczywistości niektóre kontenery mogą w ogóle nie obsługiwać żadnych właściwości otoczenia. W przypadku braku właściwości otoczenia kontrolka powinna przyjąć rozsądną wartość domyślną.

Aby uzyskać dostęp do właściwości otoczenia, wywołaj metodę COleControl::GetAmbientProperty. Ta funkcja oczekuje identyfikatora wysyłki dla właściwości otoczenia jako pierwszego parametru (plik OLECTL. H definiuje identyfikatory wysyłki dla standardowego zestawu właściwości otoczenia).

Parametry GetAmbientProperty funkcji to identyfikator wysyłki, tag wariantu wskazujący oczekiwany typ właściwości i wskaźnik do pamięci, w którym powinna zostać zwrócona wartość. Typ danych, do których odwołuje się ten wskaźnik, różni się w zależności od tagu wariantu. Funkcja zwraca wartość TRUE , jeśli kontener obsługuje właściwość , w przeciwnym razie zwraca wartość FALSE.

Poniższy przykład kodu uzyskuje wartość właściwości otoczenia o nazwie "UserMode". Jeśli właściwość nie jest obsługiwana przez kontener, przyjmuje się domyślną wartość TRUE :

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

Dla wygody dostarcza funkcje pomocnika, COleControl które uzyskują dostęp do wielu powszechnie używanych właściwości otoczenia i zwracają odpowiednie wartości domyślne, gdy właściwości nie są dostępne. Te funkcje pomocnika są następujące:

Jeśli wartość właściwości otoczenia zmieni się (za pomocą jakiejś akcji kontenera), OnAmbientPropertyChanged wywoływana jest funkcja składowa kontrolki. Zastąpi tę funkcję składową, aby obsłużyć takie powiadomienie. Parametr parametru OnAmbientPropertyChanged to identyfikator wysyłki właściwości otoczenia, której dotyczy problem. Wartość tego identyfikatora wysyłki może być DISPID_UNKNOWN, co oznacza, że co najmniej jedna właściwości otoczenia uległa zmianie, ale informacje o właściwościach, których dotyczy problem, są niedostępne.

Zobacz też

Kontrolki ActiveX MFC