属性によるプロパティの追加
ActiveX コントロールへのプロパティやメソッドの追加は、短時間で簡単にできる属性使用の練習になります。ここでは、属性を使って簡単な読み取り/書き込みカスタム プロパティを追加する手順を示し、コントロール プロジェクトに対する変更について検討します。
サンプル プログラムでは、Data という名前のカスタム プロパティを追加しています。このプロパティは、数値の現在の値を取得または設定します。このプロパティは、short 型のデータ メンバに格納されます。
カスタム プロパティを完全に実装するには、コントロールの既定のインターフェイス、およびコントロールを実装するクラスに、プロパティを追加する必要があります。この処理は、プロパティの追加ウィザードと propget 属性および propput 属性を使用して行います。これらの属性は、読み取り/書き込みプロパティ メソッドの標準セットをコントロール インターフェイスに実装します。コントロールのクライアントは、実装されるメソッドと標準の COM プロシージャを使用して、値 (この場合はデータ文字列) を参照したり設定したりします。
カスタム Data プロパティを追加するには
[クラス ビュー] の [MyAxCtrl] を展開し、IMyCtl ノードを右クリックします。
ショートカット メニューの [追加] をポイントし、[プロパティの追加] をクリックします。
プロパティの追加ウィザードが表示されます。
[プロパティの種類] ボックスの一覧の [SHORT] をクリックします。
[プロパティ名] に対して「Data」と入力します。
[完了] をクリックして、カスタム プロパティを実装します。
次の変更が行われます。
MyCtl.cpp get 関数と set 関数の本体が CMyCtl クラスに追加されます。これらは後で変更されます。
STDMETHODIMP CMyCtl::get_Data(SHORT* pVal) { // TODO: Add your implementation code here return S_OK; } STDMETHODIMP CMyCtl::put_Data(SHORT newVal) { // TODO: Add your implementation code here return S_OK; }
MyCtl.h get メソッドと set メソッドが IMyCtl インターフェイスに追加されます。
[propget, id(1), helpstring("property Data")] HRESULT Data([out, retval] SHORT* pVal); [propput, id(1), helpstring("property Data")] HRESULT Data([in] SHORT newVal);
MyCtl.h get メソッドと set メソッドの宣言が CMyCtl クラスに追加されます。
STDMETHOD(get_Data)(SHORT* pVal); STDMETHOD(put_Data)( SHORT newVal);
Data プロパティを完全に実装するには、現在の値を格納しているコントロール クラスにデータ メンバが追加され、プロパティ値を取得および更新するコードが get/put 関数に追加される必要があります。
カスタム Data プロパティの実装を完成するには
[クラス ビュー] の、CMyCtl ノードを右クリックします。
ショートカット メニューの [追加] をクリックし、[変数の追加] をクリックします。
メンバ変数の追加ウィザードが表示されます。
[変数の種類] ボックスの一覧の [short] をクリックします。
[変数名] に対して「m_iData」と入力します。
[完了] をクリックします。
MyCtl.cpp で、コメントを次のコードで置換して get_Data 関数を変更します。
*pVal= m_iData;
コメントを次のコードで置換し、put_Data 関数を変更します。
m_iData= newVal;
ソリューションをビルドします。
次に進むには、「属性によるイベントの追加」を参照してください。