MFC ActiveX 控制項:存取環境屬性
本文討論 ActiveX 控制項如何存取其控制項容器的環境屬性。
控制項可以藉由存取容器的環境屬性來取得其容器的相關資訊。 這些屬性會公開視覺特性,例如容器的背景色彩、容器所使用的目前字型,以及操作特性,例如容器目前處於使用者模式或設計工具模式。 控制項可以使用環境屬性來針對內嵌的特定容器量身打造其外觀和行為。 不過,控制項絕對不應該假設其容器將支援任何特定的環境屬性。 事實上,某些容器可能完全不支援任何環境屬性。 如果沒有環境屬性,控制項應該假設合理的預設值。
若要存取環境屬性,請呼叫 COleControl::GetAmbientProperty 。 此函式預期環境屬性的分派識別碼為第一個參數(檔案 OLECTL。H 會定義標準環境屬性集的分派識別碼。
函式的參數 GetAmbientProperty
是分派識別碼、指出預期屬性類型的 Variant 標記,以及應該傳回值的記憶體指標。 此指標所參考的資料類型會根據 Variant 標記而有所不同。 如果容器支援 屬性,則函式會傳回 TRUE ,否則會傳 回 FALSE 。
下列程式碼範例會取得名為 「UserMode」 的環境屬性值。如果容器不支援 屬性,則會假設預設值為 TRUE :
BOOL bUserMode;
if (!GetAmbientProperty(DISPID_AMBIENT_USERMODE, VT_BOOL, &bUserMode))
bUserMode = TRUE;
為了方便起見, COleControl
提供可存取許多常用環境屬性的協助程式函式,並在屬性無法使用時傳回適當的預設值。 這些協助程式函式如下所示:
-
注意
呼叫端必須在傳回的字型上呼叫
Release( )
。
如果環境屬性的值變更(透過容器的一些動作), OnAmbientPropertyChanged
則會呼叫 控制項的成員函式。 覆寫此成員函式來處理這類通知。 OnAmbientPropertyChanged
的參數是受影響環境屬性的分派識別碼。 此分派識別碼的值可能會DISPID_UNKNOWN,這表示一或多個環境屬性已變更,但受影響的屬性相關資訊無法使用。