MFC ActiveX 控制: 進階的屬性實作
本文將告訴您與實作進階 ActiveX 控制項中的屬性相關的主題:
唯讀和唯寫屬性
從屬性傳回錯誤碼
唯讀和唯寫屬性
加入屬性精靈提供快速又簡單的方法來實作唯讀或唯寫的控制項的屬性。
若要實作唯讀或唯寫屬性的屬性
載入控制項專案。
在 [類別檢視中,展開您的控制項程式庫節點。
您的控制項 (程式庫節點的第二個節點) 的 [介面] 節點上按一下滑鼠右鍵來開啟快顯功能表。
從快速鍵功能表中,按一下 [ 新增 ,然後按一下 [ 加入屬性。
如此會開啟加入屬性精靈。
在屬性名稱方塊中,輸入您的屬性名稱。
對於實作類型,按一下 [ Get/Set 方法。
在屬性型別方塊中,選取適當的型別屬性。
如果您想為唯讀的屬性,請清除 Set 函式名稱。如果您想唯寫屬性,請清除 Get 函式名稱。
按一下 [完成]。
當您執行這項操作時,加入屬性精靈就會插入函式SetNotSupported或GetNotSupported分派對應項目,來代替標準模式中設定或取得函式。
如果您想要變更現有屬性是唯讀或唯寫屬性,您可以以手動方式編輯分派對應並從控制項類別移除不必要的 Set 或 Get 函式。
如果您想要被有條件地唯讀或唯寫性質 (比方說,只有在您的控制項以特定的模式下操作時) 的屬性,才能提供 Set 或 Get 函式,依照平常及呼叫SetNotSupported或GetNotSupported函式在適當的地方。例如:
void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (m_bReadOnlyMode) // some control-specific state
{
SetNotSupported();
}
else
{
m_iPropVal = newVal; // set property as normal
SetModifiedFlag();
}
}
這個程式碼範例會呼叫SetNotSupported如果m_bReadOnlyMode資料成員是 ,則為 TRUE。如果 ,則為 FALSE,則屬性設定為新的值。
從屬性傳回錯誤碼
若要指出錯誤發生在嘗試取得或設定屬性,請使用COleControl::ThrowError函式,會使用SCODE (狀態碼) 做為參數。您可以使用預先定義的SCODE或定義您自己。為一系列預先定義SCODEs 和定義自訂指示SCODEs,請參閱處理您的 ActiveX 控制項中的錯誤中的文件 ActiveX 控制項: 進階主題。
Helper 函式有個最常見的預先定義的SCODEs,例如 COleControl::SetNotSupported, COleControl::GetNotSupported,以及 COleControl::SetNotPermitted。
注意事項 |
---|
ThrowError主要用於僅做為傳回從錯誤中屬性的 Get 或 Set 函式或自動化方法。這些都是唯一堆疊上顯示的時間將會是適當的例外狀況處理常式。 |
如需有關如何報告程式碼的其他區域中的例外狀況的詳細資訊,請參閱 COleControl::FireError 及章節處理您的 ActiveX 控制項中的錯誤 ActiveX 控制項 」 文件中: 進階主題。