MFC ActiveX コントロール : ストック プロパティの追加
ストック プロパティは、カスタム プロパティと COleControlクラスで既に実装されている異なります。COleControl は、コントロールの共通プロパティをサポートする、定義されたメンバー関数が含まれています。共通プロパティは、コントロールのキャプションと前景色と背景色が含まれます。他のストック プロパティの詳細については、この技術情報の プロパティの追加ウィザードでサポートされるストック プロパティ を参照してください。ストック プロパティのディスパッチ マップのエントリは DISP_STOCKPROPによって常にプレフィックスとして付けられます。
この技術情報、プロパティの追加ウィザードを使用して ActiveX コントロールにストック プロパティを (この場合、キャプション)を追加する方法、および生成されたコード変更について説明します。ここでは、次の内容について説明します。
ストック プロパティを追加するプロパティの追加ウィザードを使用して
ストック プロパティのプロパティの追加ウィザードの変更
プロパティの追加ウィザードでサポートされるストック プロパティ
ストック プロパティと通知
色プロパティ
[!メモ]
Visual Basic のカスタム コントロールは、通常、左、上、幅、高さ、配置、タグ、名前、 TabIndex、 TabStop と親のようなプロパティがあります。ただし、 ActiveX コントロール コンテナーはこれらのコントロール プロパティを実装する必要があるため、 ActiveX コントロールでは、これらのプロパティをサポートしません。
ストック プロパティを追加するプロパティの追加ウィザードを使用して
ストック プロパティを追加すると、プロパティのサポートが COleControlによって自動的に処理されるためです。カスタム プロパティを追加するよりコードが少なくて済みます。次の手順では、 ActiveX コントロールのフレームワークに標準的なキャプション プロパティを追加することを示し、他のストック プロパティを追加することもできます。キャプションの選択したストック プロパティの名前で置き換えます。
標準的なキャプション プロパティをプロパティの追加ウィザードを追加するには
コントロール プロジェクトを読み込んでください。
クラス ビューで、コントロールのライブラリ ノードを展開します。
ショートカット メニューを開くには、コントロール (ライブラリ ノードの 2 番目のノード)のインターフェイス ノードを右クリックします。
ショートカット メニューのをクリック 追加 は、 プロパティの追加をクリックします。
これは プロパティ追加ウィザードを開きます。
プロパティ名(O),プロパティ名 ボックスで、をクリック キャプション。
[完了] をクリックします。
ストック プロパティのプロパティの追加ウィザードの変更
COleControl がストック プロパティをサポートするため、プロパティの追加ウィザードは何かのクラス宣言を変更できません; これはディスパッチ マップにプロパティを追加します。プロパティの追加ウィザードは、実装 (.cpp)ファイルにあるコントロールのディスパッチ マップに次の行を追加します:
DISP_STOCKPROP_CAPTION()
次の行はコントロールのインターフェイスの説明 (.IDL)ファイルに追加されます:
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
この行はキャプション プロパティに仕様 ID を割り当てます。プロパティを連結可能、値を変更する前にデータベースの承認を要求することに注意してください。
これは、キャプション プロパティをコントロールのユーザーが使用できるようにします。ストック プロパティの値を使用する場合は、 COleControl の基本クラスのメンバー変数とメンバー関数にアクセスします。これらのメンバー変数とメンバー関数の詳細については、次のセクション、プロパティの追加ウィザードでサポートされるストック プロパティ " " を参照してください。
プロパティの追加ウィザードでサポートされるストック プロパティ
COleControl のクラスは 9 種類のストック プロパティを提供します。[プロパティの追加ウィザードを使用して使用するプロパティを追加できます。
プロパティ |
ディスパッチ マップ エントリ |
値にアクセスする方法 |
---|---|---|
[表示] |
DISP_STOCKPROP_APPEARANCE () |
m_sAppearanceとしてアクセスできる値。 |
BackColor |
DISP_STOCKPROP_BACKCOLOR () |
GetBackColorを呼び出すことによってアクセス可能な値。 |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE () |
m_sBorderStyleとしてアクセスできる値。 |
[キャプション] |
DISP_STOCKPROP_CAPTION () |
InternalGetTextを呼び出すことによってアクセス可能な値。 |
Enabled |
DISP_STOCKPROP_ENABLED () |
m_bEnabledとしてアクセスできる値。 |
フォント |
DISP_STOCKPROP_FONT () |
使用については、技術情報 MFC ActiveX コントロール: フォントを使用します を参照してください。 |
ForeColor |
DISP_STOCKPROP_FORECOLOR () |
GetForeColorを呼び出すことによってアクセスできる評価します。 |
hWnd |
DISP_STOCKPROP_HWND () |
m_hWndとしてアクセスできます評価します。 |
テキスト |
DISP_STOCKPROP_TEXT () |
InternalGetTextを呼び出すことによってアクセス可能な値。このプロパティは、プロパティ名を除く キャプションと同じです。 |
ReadyState |
DISP_STOCKPROP_READYSTATE () |
m_lReadyState か GetReadyStateとしてアクセス可能な値 |
ストック プロパティと通知
ほとんどのストック プロパティにオーバーライドできる通知関数があります。たとえば、 BackColor のプロパティが変更されるたびに、 OnBackColorChanged の関数 (コントロール クラスのメンバー関数)が呼び出されます。既定の実装は COleControl() InvalidateControlをダイヤルします。この状況に応じて追加のアクションを実行するには、この関数をオーバーライドします。
色プロパティ
コントロールを塗りつぶすときにカスタム色プロパティを BackColor の標準的な ForeColor とプロパティを使用できます。色のプロパティを使用するには、 COleControl::TranslateColor のメンバー関数をダイヤルします。この関数のパラメーターは色プロパティの値およびオプション ボックスのハンドルです。戻り値は SetTextColor と CreateSolidBrushのような GDI の関数に、渡すことができる COLORREF 値です。
BackColor の標準的な ForeColor プロパティとプロパティの色の値は GetForeColor か GetBackColor 関数を呼び出すことによって、個別にアクセスされます。
次の例は、これら二つの色プロパティを使用してコントロールを描画するとき示します。これは TranslateColorに呼び出しを持つ COLORREF の一時変数と CBrush のオブジェクトを初期化します: ForeColor のプロパティを使用して 1 および BackColor のプロパティを使用してそのほか。CBrush の一時オブジェクトは、コントロールの四角形の描画に使用されるテキストの色は ForeColor のプロパティを使用して設定されます。
CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);