將屬性加入至控制項 (ATL 教學課程,第 3 部分)
IPolyCtl
是包含控制項之自訂方法和屬性的介面,而且您會將屬性加入其中。
將屬性定義新增至專案
在 [類別檢視] 中
Polygon
,展開 分支。以滑鼠右鍵按一下
IPolyCtl
。在快捷方式功能表上,按一下 [新增 ],然後按一下 [ 新增屬性 ]。 [新增屬性 精靈] 隨即出現。
輸入
Sides
做為 屬性名稱 。在 [屬性類型] 的 下拉式清單中,選取
short
。按一下 [ 確定 ] 以完成新增 屬性。
從 方案總管 開啟 Polygon.idl,並在介面結尾
IPolyCtl : IDispatch
取代下列幾行:short get_Sides(); void set_Sides(short value);
取代為
[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal); [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
從 方案總管 開啟 PolyCtl.h,並在 定義
m_clrFillColor
之後新增下列幾行:short m_nSides; STDMETHOD(get_Sides)(short* pval); STDMETHOD(put_Sides)(short newval);
雖然您現在有基本架構函式可設定和擷取屬性,以及用來儲存屬性的變數,但您必須據以實作函式。
更新 get 和 put 方法
設定 的
m_nSides
預設值。 將線條新增至 PolyCtl.h 中的建構函式,將預設圖形設為三角形:m_nSides = 3;
實作
Get
和Put
方法。 和put_Sides
函get_Sides
式宣告已新增至 PolyCtl.h。 現在,使用下列專案將 和put_Sides
的程式碼get_Sides
新增至 PolyCtl.cpp:STDMETHODIMP CPolyCtl::get_Sides(short* pVal) { *pVal = m_nSides; return S_OK; } STDMETHODIMP CPolyCtl::put_Sides(short newVal) { if (2 < newVal && newVal < 101) { m_nSides = newVal; return S_OK; } else { return Error(_T("Shape must have between 3 and 100 sides")); } }
方法 get_Sides
會透過 pVal
指標傳回 屬性的 Sides
目前值。 在 方法中 put_Sides
,程式碼可確保使用者將 屬性設定 Sides
為可接受的值。 最小值必須是 3,而且因為每個端都會使用點陣列,因此 100 是最大值的合理限制。
您現在有一 Sides
個名為 的屬性。 在下一個步驟中,您將變更繪圖程式碼以使用它。