次の方法で共有


コントロールへのプロパティの追加 (ATL チュートリアル、パート 3)

IPolyCtl は、コントロールのカスタムメソッドとプロパティを含むインターフェイスであり、プロパティを追加します。

プロパティ定義をプロジェクトに追加するには

  1. [クラス ビュー]Polygon 分岐を展開します。

  2. IPolyCtl を右クリックします。

  3. ショートカット メニューで、[追加][プロパティの追加] の順にクリックします。 [プロパティの追加] ウィザードが表示されます。

  4. [プロパティ名] に「Sides」と入力します。

  5. [プロパティの種類] ドロップダウン リストで short を選択します。

  6. [OK] をクリックしてプロパティの追加を完了します。

  7. ソリューション エクスプローラーから、Polygon.idl を開き、IPolyCtl : IDispatch インターフェイスの末尾で次の行を置換します。

    short get_Sides();
    void set_Sides(short value);
    

    with

    [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. Get および Put メソッドを実装します。 get_Sides および put_Sides 関数宣言が PolyCtl.h に追加されました。 次のように get_Sidesput_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 に進む

関連項目

チュートリアル