Udostępnij przez


Kontrolki ActiveX MFC: uzyskiwanie dostępu do właściwości otoczenia

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 środowiskowych. 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 funkcji GetAmbientProperty to identyfikator wywołania, tag wariantu wskazujący oczekiwany typ właściwości oraz wskaźnik w pamięci, gdzie powinna zostać zwrócona wartość. Typ danych, do których odwołuje się ten wskaźnik, będzie się różnić w zależności od wariantu oznaczonego przez tag. 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 Twojej wygody, COleControl dostarcza funkcje pomocnicze, 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 kontroli. Zastąp tę funkcję składową, aby obsłużyć takie powiadomienie. Parametr dla OnAmbientPropertyChanged to identyfikator wysyłki odpowiedniej właściwości otoczenia. Wartość tego identyfikatora wysyłki może być DISPID_UNKNOWN, co oznacza, że jedna lub więcej właściwości otoczenia uległy zmianie, ale informacje o tym, które właściwości zostały zmienione, są niedostępne.

Zobacz także

Kontrolki ActiveX MFC