ストック プロパティは、クラス COleControl
によって既に実装されているという点で、カスタム プロパティとは異なります。
COleControl
には、コントロールの共通プロパティをサポートする定義済みのメンバー関数が含まれています。 一部の一般的なプロパティには、コントロールのキャプションと前景色と背景色が含まれます。 その他のストック プロパティの詳細については、この記事の後半の 「プロパティの追加ウィザードでサポートされるストック プロパティ 」を参照してください。 ストック プロパティのディスパッチ マップ エントリには、常にDISP_STOCKPROPプレフィックスが付けられます。
この記事では、プロパティの追加ウィザードを使用して ActiveX コントロールにストック プロパティ (この場合は Caption) を追加する方法について説明し、結果のコード変更について説明します。 ここでは、次の内容について説明します。
-
注
Visual Basic カスタム コントロールには、通常、Top、Left、Width、Height、Align、Tag、Name、TabIndex、TabStop、Parent などのプロパティがあります。 ただし、ActiveX コントロール コンテナーはこれらのコントロール プロパティの実装を担当するため、ActiveX コントロールではこれらのプロパティをサポートしないでください。
プロパティの追加ウィザードを使用してストック プロパティを追加する
ストック プロパティを追加すると、プロパティのサポートは COleControl
によって自動的に処理されるため、カスタム プロパティを追加するよりもコードが少なくて済みます。 次の手順では、ActiveX コントロール フレームワークに stock Caption プロパティを追加する方法を示します。また、他のストック プロパティの追加にも使用できます。 選択したストック プロパティ名を Caption に置き換える。
プロパティの追加ウィザードを使用してストック キャプション プロパティを追加するには
コントロールのプロジェクトを読み込みます。
クラス ビューで、コントロールのライブラリ ノードを展開します。
コントロールのインターフェイス ノード (ライブラリ ノードの 2 番目のノード) を右クリックして、ショートカット メニューを開きます。
ショートカット メニューの [ 追加 ] をクリックし、[ プロパティの追加] をクリックします。
プロパティの追加ウィザードが開きます。
[ プロパティ名] ボックスで、[ キャプション] をクリックします。
[完了] をクリックします。
ストック プロパティのプロパティの追加ウィザードの変更
COleControl
はストック プロパティをサポートしているため、プロパティの追加ウィザードはクラス宣言を変更しません。ディスパッチ マップにプロパティを追加します。 プロパティの追加ウィザードは、次の行をコントロールのディスパッチ マップに追加します。これは実装 (.CPP) ファイル:
DISP_STOCKPROP_CAPTION()
次の行が、コントロールのインターフェイスの説明 (.IDL) ファイル:
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
この行は、Caption プロパティに特定の ID を割り当てます。 プロパティはバインド可能であり、値を変更する前にデータベースにアクセス許可を要求することに注意してください。
これにより、Caption プロパティをコントロールのユーザーが使用できるようになります。 ストック プロパティの値を使用するには、 COleControl
基底クラスのメンバー変数またはメンバー関数にアクセスします。 これらのメンバー変数とメンバー関数の詳細については、次のセクション「プロパティの追加ウィザードでサポートされるストック プロパティ」を参照してください。
プロパティの追加ウィザードでサポートされるストック プロパティ
COleControl
クラスには、9 つのストック プロパティがあります。 プロパティの追加ウィザードを使用して、必要なプロパティを追加できます。
プロパティ | ディスパッチ マップ エントリ | 値にアクセスする方法 |
---|---|---|
Appearance |
DISP_STOCKPROP_APPEARANCE( ) |
m_sAppearance としてアクセス可能な値。 |
BackColor |
DISP_STOCKPROP_BACKCOLOR( ) |
GetBackColor を呼び出すことによってアクセス可能な値。 |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE( ) |
m_sBorderStyle としてアクセス可能な値。 |
Caption |
DISP_STOCKPROP_CAPTION( ) |
InternalGetText を呼び出すことによってアクセス可能な値。 |
Enabled |
DISP_STOCKPROP_ENABLED( ) |
m_bEnabled としてアクセス可能な値。 |
Font |
DISP_STOCKPROP_FONT( ) | MFC ActiveX コントロール: 使用するフォントの使用に関する記事を参照してください。 |
ForeColor |
DISP_STOCKPROP_FORECOLOR( ) |
GetForeColor を呼び出すことによってアクセス可能な値。 |
hWnd |
DISP_STOCKPROP_HWND( ) |
m_hWnd としてアクセス可能な値。 |
Text |
DISP_STOCKPROP_TEXT( ) |
InternalGetText を呼び出すことによってアクセス可能な値。 このプロパティは、プロパティ名を除き、 Caption と同じです。 |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
m_lReadyState またはアクセス可能な値GetReadyState |
ストック プロパティと通知
ほとんどのストック プロパティには、オーバーライドできる通知関数があります。 たとえば、 BackColor
プロパティが変更されるたびに、 OnBackColorChanged
関数 (コントロール クラスのメンバー関数) が呼び出されます。 既定の実装 ( COleControl
) は InvalidateControl
を呼び出します。 この状況に対応して追加のアクションを実行する場合は、この関数をオーバーライドします。
カラー プロパティ
コントロールを描画するときに、ストック ForeColor
プロパティと BackColor
プロパティ、または独自のカスタム カラー プロパティを使用できます。 color プロパティを使用するには、 COleControl::TranslateColor メンバー関数を呼び出します。 この関数のパラメーターは、color プロパティの値とオプションのパレット ハンドルです。 戻り値は、やなどの GDI 関数に渡すことができる COLORREF 値です。
ストック ForeColor
プロパティと BackColor
プロパティの色の値にアクセスするには、それぞれ GetForeColor
または GetBackColor
関数を呼び出します。
次の例では、コントロールを描画するときにこれら 2 つの色プロパティを使用する方法を示します。 一時 COLORREF 変数と CBrush
オブジェクトを初期化し、 TranslateColor
を呼び出します。1 つは 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);
こちらも参照ください
MFC ActiveX コントロール
MFC ActiveX コントロール: プロパティ
MFC ActiveX コントロール: メソッド
COleControl クラス