次の方法で共有


手順 3: コントロールへのプロパティの追加

更新 : 2007 年 11 月

IPolyCtl は、コントロールのカスタム メソッドとカスタム プロパティから成るインターフェイスです。このインターフェイスにプロパティを追加します。

プロパティの追加ウィザードを使ってプロパティを追加するには

  1. [クラス ビュー] の Polygon を展開し、IPolyCtl を右クリックします。

  2. ショートカット メニューの [追加] をポイントし、[プロパティの追加] をクリックします。

    プロパティの追加ウィザードが表示されます。

  3. [プロパティの種類] ボックスの [SHORT] をクリックします。

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

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

インターフェイスにプロパティを追加すると、.idl ファイルをコンパイルするプログラムである Microsoft インターフェイス定義言語 (MIDL: Microsoft Interface Definition Language) によって、プロパティ値を取得する Get メソッドと新しい値を設定する Put メソッドが定義されます。メソッド名は、プロパティ名の前に put_ または get_ を付けた名前になります。

プロパティの追加ウィザードにより、必要な行が .idl ファイルに追加されます。また、プロパティの追加ウィザードは、PolyCtl.h のクラス定義に Get 関数と Put 関数のプロトタイプを追加し、PolyCtl.cpp に空の実装も追加します。PolyCtl.cpp を開くと、get_Sides 関数と put_Sides 関数が見つかります。これによって、空の実装の追加を確認できます。

これで、プロパティの設定と取得を行うスケルトン関数は完成しましたが、プロパティを格納する場所が必要です。プロパティを格納する変数を作成し、関数を更新します。

プロパティを格納する変数を作成し、put メソッドと get メソッドを更新するには

  1. ソリューション エクスプローラで PolyCtl.h を開き、m_clrFillColor の定義の後に次の行を追加します。

    short m_nSides;
    
  2. m_nSides の既定値を設定します。三角形を既定の形にするために、PolyCtl.h のコンストラクタに次の行を追加します。

    m_nSides = 3;
    
  3. Get メソッドと Put メソッドを実装します。PolyCtl.h に get_Sides 関数と put_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 プロパティを許容可能な値に設定したかどうかを確認します。最小値は 2 より大きな値です。また、各辺には頂点の配列が使用されるため、値の上限としては 100 が現実的です。

これで Sides というプロパティが完成しました。次の手順では、Sides プロパティを使用できるように描画コードを変更します。

手順 2 に戻る | 手順 4 に進む

参照

参照

ATL チュートリアル