共用方式為


將屬性加入至控制項 (ATL 教學課程,第 3 部分)

IPolyCtl 是包含控制項之自訂方法和屬性的介面,而且您會將屬性加入其中。

將屬性定義新增至專案

  1. [類別檢視] Polygon ,展開 分支。

  2. 以滑鼠右鍵按一下 IPolyCtl

  3. 在快捷方式功能表上,按一下 [新增 ],然後按一下 [ 新增屬性 ]。 [新增屬性 精靈] 隨即出現。

  4. 輸入 Sides 做為 屬性名稱

  5. 在 [屬性類型] 的 下拉式清單中,選取 short

  6. 按一下 [ 確定 ] 以完成新增 屬性。

  7. 方案總管 開啟 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);
    
  8. 方案總管 開啟 PolyCtl.h,並在 定義 m_clrFillColor 之後新增下列幾行:

    short m_nSides;
    STDMETHOD(get_Sides)(short* pval);
    STDMETHOD(put_Sides)(short newval);
    

雖然您現在有基本架構函式可設定和擷取屬性,以及用來儲存屬性的變數,但您必須據以實作函式。

更新 get 和 put 方法

  1. 設定 的 m_nSides 預設值。 將線條新增至 PolyCtl.h 中的建構函式,將預設圖形設為三角形:

    m_nSides = 3;
    
  2. 實作 GetPut 方法。 和 put_Sidesget_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 個名為 的屬性。 在下一個步驟中,您將變更繪圖程式碼以使用它。

回到步驟 2 | 開啟至步驟 4

另請參閱

教學課程