更新 : 2007 年 11 月
IPolyCtl は、コントロールのカスタム メソッドとカスタム プロパティから成るインターフェイスです。このインターフェイスにプロパティを追加します。
プロパティの追加ウィザードを使ってプロパティを追加するには
[クラス ビュー] の Polygon を展開し、IPolyCtl を右クリックします。
ショートカット メニューの [追加] をポイントし、[プロパティの追加] をクリックします。
プロパティの追加ウィザードが表示されます。
[プロパティの種類] ボックスの [SHORT] をクリックします。
[プロパティ名] として「Sides」を入力します。
[完了] をクリックして、プロパティの追加を完了します。
インターフェイスにプロパティを追加すると、.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 メソッドを更新するには
ソリューション エクスプローラで PolyCtl.h を開き、m_clrFillColor の定義の後に次の行を追加します。
short m_nSides;
m_nSides の既定値を設定します。三角形を既定の形にするために、PolyCtl.h のコンストラクタに次の行を追加します。
m_nSides = 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 プロパティを使用できるように描画コードを変更します。