次の方法で共有


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

更新 : 2011 年 1 月

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

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

  1. クラス ビューでは、多角形を展開します。

  2. IPolyCtl を右クリックします。

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

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

  4. プロパティの種類のボックスの一覧を選択SHORT。

  5. 型サイド として、 プロパティ名。

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

インターフェイスにプロパティを追加すると、.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 のためのコードを置き換えますget_Sidesput_Sidesを次のコード。

    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 チュートリアル: Web ページ内の ActiveX コントロール

履歴の変更

日付

History

理由

2011 年 1 月

精度を更新します。

カスタマー フィードバック