次の方法で共有


属性によるプロパティの追加

ActiveX コントロールへのプロパティやメソッドの追加は、短時間で簡単にできる属性使用の練習になります。ここでは、属性を使って簡単な読み取り/書き込みカスタム プロパティを追加する手順を示し、コントロール プロジェクトに対する変更について検討します。

サンプル プログラムでは、Data という名前のカスタム プロパティを追加しています。このプロパティは、数値の現在の値を取得または設定します。このプロパティは、short 型のデータ メンバに格納されます。

カスタム プロパティを完全に実装するには、コントロールの既定のインターフェイス、およびコントロールを実装するクラスに、プロパティを追加する必要があります。この処理は、プロパティの追加ウィザードと propget 属性および propput 属性を使用して行います。これらの属性は、読み取り/書き込みプロパティ メソッドの標準セットをコントロール インターフェイスに実装します。コントロールのクライアントは、実装されるメソッドと標準の COM プロシージャを使用して、値 (この場合はデータ文字列) を参照したり設定したりします。

カスタム Data プロパティを追加するには

  1. [クラス ビュー] の [MyAxCtrl] を展開し、IMyCtl ノードを右クリックします。

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

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

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

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

  5. [完了] をクリックして、カスタム プロパティを実装します。

次の変更が行われます。

  • 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 プロパティの実装を完成するには

  1. [クラス ビュー] の、CMyCtl ノードを右クリックします。

  2. ショートカット メニューの [追加] をクリックし、[変数の追加] をクリックします。

    メンバ変数の追加ウィザードが表示されます。

  3. [変数の種類] ボックスの一覧の [short] をクリックします。

  4. [変数名] に対して「m_iData」と入力します。

  5. [完了] をクリックします。

  6. MyCtl.cpp で、コメントを次のコードで置換して get_Data 関数を変更します。

    *pVal= m_iData;
    
  7. コメントを次のコードで置換し、put_Data 関数を変更します。

    m_iData= newVal;
    
  8. ソリューションをビルドします。

次に進むには、「属性によるイベントの追加」を参照してください。

参照

概念

チュートリアル : 属性による ActiveX コントロールの作成

ActiveX コントロール プロジェクトの作成

ATL コントロール コンポーネントの追加

属性のチュートリアル