Formanty MFC ActiveX: uzyskiwanie dostępu do właściwości otaczających
W tym artykule omówiono, jak formantu ActiveX można uzyskać dostęp do otoczenia właściwości formantu kontenera.
Formant można uzyskać informacje o jego kontenera przez uzyskaniem dostępu do właściwości otoczenia kontenera.Te właściwości narazić cechy wizualne, takie jak kolor tła kontenera, bieżącej czcionki używane przez kontener i właściwości operacyjnych, takich jak czy kontener jest obecnie w trybie użytkownika lub projektanta.Formant można użyć właściwości otoczenia, aby dostosować wygląd i zachowanie do określonego kontenera, w którym jest osadzony.Jednak formant powinny nigdy nie zakładać, że jego opakowanie będzie obsługiwać żadnych określonej właściwości otoczenia.W rzeczywistości niektóre kontenery mogą nie obsługiwać żadnych właściwości otoczenia w ogóle.W przypadku braku otoczenia właściwość formantu powinien założyć wartość standardową.
Dostęp otoczenia właściwość, do wywoływania COleControl::GetAmbientProperty.Ta funkcja spodziewa identyfikator wysyłki dla właściwości otoczenia jako pierwszy parametr (plik OLECTL.H definiuje identyfikatorów wysyłania dla standardowego zestawu właściwości otoczenia).
Parametry GetAmbientProperty funkcji są identyfikator wysyłki, wariantu znacznik wskazujący typ oczekiwany właściwości i wskaźnik do pamięci, gdzie wartość powinna być zwracana.Typ danych, do którego odwołuje się ten wskaźnik zależą od typu variant tag.Funkcja zwraca TRUE Jeśli kontener obsługuje właściwość, w przeciwnym razie zwraca FALSE.
Poniższy kod pobiera wartość właściwości otoczenia o nazwie "Przekierowanie". Jeśli właściwość nie jest obsługiwana przez kontener, domyślną wartość TRUE zakłada, że:
BOOL bUserMode;
if(!GetAmbientProperty( DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;
Dla Twojej wygody COleControl dostarcza funkcji pomocnika, które dostęp do wielu najczęściej używane właściwości otoczenia i zwraca odpowiednie wartości domyślne, gdy właściwości nie są dostępne.Funkcje pomocnika są w następujący sposób:
-
[!UWAGA]
Rozmówca musi wywołać, (Release) na czcionkę zwrócone.
Zmiana wartości właściwości otoczenia (przez pewne działania kontenera), OnAmbientPropertyChanged funkcji składowej formantu jest nazywany.Zastąpienie tej funkcji członka do obsługi takiej notyfikacji.Parametr dla OnAmbientPropertyChanged jest identyfikator wysyłki dotkniętych właściwości otoczenia.Wartość identyfikator tej wysyłki może być DISPID_UNKNOWN, co oznacza, że zmienił się jedną lub więcej właściwości otoczenia, ale informacje o tym, które zostały dotknięte właściwości są niedostępne.