コントロールへのプロパティの追加 (ATL チュートリアル、パート 3)
IPolyCtl
は、コントロールのカスタムメソッドとプロパティを含むインターフェイスであり、プロパティを追加します。
プロパティ定義をプロジェクトに追加するには
[クラス ビュー] で
Polygon
分岐を展開します。IPolyCtl
を右クリックします。ショートカット メニューで、[追加]、[プロパティの追加] の順にクリックします。 [プロパティの追加] ウィザードが表示されます。
[プロパティ名] に「
Sides
」と入力します。[プロパティの種類] ドロップダウン リストで
short
を選択します。[OK] をクリックしてプロパティの追加を完了します。
ソリューション エクスプローラーから、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);
ソリューション エクスプローラーから、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
メソッドを実装します。get_Sides
およびput_Sides
関数宣言が 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
プロパティを許容値に設定することになります。 最小値は 3 にする必要があります。また、点の配列が各辺に使用されるため、100 は最大値に対して妥当な限度となります。
これで Sides
という名前のプロパティが与えられます。 次の手順では、それを使用するように描画コードを変更します。