共用方式為


MFC ActiveX 控制項: 存取環境屬性

本文將告訴您如何存取 ActiveX 控制項能與其控制項容器的環境屬性。

控制項可以藉由存取容器的環境屬性來取得其容器的相關資訊。 這些屬性會公開視覺特性,例如容器的背景色彩,例如是否容器目前是處於使用者模式或是設計者模式,由容器,以及操作特性,目前的字型。 控制項可用來修改其外觀及行為,以其內嵌所在的特定容器的環境屬性。 不過,控制項不應假設其容器會支援任何特定的環境屬性。 事實上,有些容器並不完全支援任何環境屬性。 如果沒有使用環境屬性,控制項應採用合理的預設值。

如果要存取 [環境屬性,請撥電話到 COleControl::GetAmbientProperty。 這個函式會將環境屬性的分派識別碼的第一個參數 (olectl。H 定義一組標準的環境屬性的分派識別碼)。

參數的GetAmbientProperty函式會分派 ID,表示必須要有的屬性類型而定和記憶體的指標變數標籤應該會傳回值。 將 this 指標所參考的資料型別變數的標籤會有所不同。 函式會傳回 ,則為 TRUE 如果容器支援的屬性,否則它會傳回 ,則為 FALSE

下列程式碼範例會取得屬性值的環境稱為 「 使用者模式 」。如果屬性不支援的容器,其預設值為 ,則為 TRUE 會假設:

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

為了方便起見, COleControl提供存取許多常用的環境屬性,且傳回適當的預設值,當屬性沒有可用的協助程式函式。 這些協助程式函式如下所示:

如果您的環境屬性的值變更時 (透過某些動作的容器), OnAmbientPropertyChanged 控制項的成員函式被呼叫。 覆寫這個成員函式,來處理這類通知。 參數的 OnAmbientPropertyChanged 受影響的環境屬性的分派 id。 此分派 ID 的值可能是 DISPID_UNKNOWN,來表示一或多個環境的屬性已經變更,但是了解哪種屬性所影響的資訊無法使用。

請參閱

概念

MFC ActiveX 控制項