MFC ActiveX 控件:添加库存属性

股票属性不同于自定义属性,因为它们已由类 COleControl实现。 COleControl 包含支持控件通用属性的预定义成员函数。 一些常见属性包括控件的标题和前景和背景色。 有关其他股票属性的信息,请参阅本文后面的 “添加属性向导支持的股票属性 ”。 库存属性的调度映射条目始终以DISP_STOCKPROP为前缀。

本文介绍如何使用“添加属性向导”将库存属性(在本例中为 Caption)添加到 ActiveX 控件,并说明生成的代码修改。 主题包括:

使用“添加属性向导”添加股票属性

添加股票属性所需的代码比添加自定义属性少,因为对属性的支持由自动 COleControl处理。 以下过程演示如何将 stock Caption 属性添加到 ActiveX 控件框架,还可用于添加其他股票属性。 将所选股票属性名称替换为 Caption。

使用“添加属性向导”添加 stock Caption 属性

  1. 加载控件的项目。

  2. 在类视图中,展开控件的库节点。

  3. 右键单击控件(库节点的第二个节点)的接口节点以打开快捷菜单。

  4. 在快捷菜单中,单击“ 添加 ”,然后单击“ 添加属性”。

    这将打开 “添加属性向导”。

  5. “属性名称 ”框中,单击“ 标题”。

  6. 单击“完成”。

为库存属性添加属性向导更改

由于 COleControl 支持股票属性,因此“添加属性向导”不会以任何方式更改类声明;它将属性添加到调度映射。 添加属性向导将以下行添加到位于实现中的控件的调度映射中。CPP) 文件:

DISP_STOCKPROP_CAPTION()

以下行将添加到控件的接口说明中(。IDL) 文件:

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

此行为 Caption 属性分配一个特定 ID。 请注意,该属性是可绑定的,并将在修改值之前从数据库请求权限。

这使 Caption 属性可供控件的用户使用。 若要使用 stock 属性的值,请访问基类的成员变量或成员函数 COleControl 。 有关这些成员变量和成员函数的详细信息,请参阅下一部分:添加属性向导支持的股票属性。

添加属性向导支持的股票属性

COleControl 类提供九个股票属性。 可以使用“添加属性向导”添加所需的属性。

资产 调度映射条目 如何访问值
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 调用该函数(控件类的成员函数)。 默认实现 (in COleControl) 调用 InvalidateControl。 如果要采取其他作来响应这种情况,请重写此函数。

颜色属性

绘制控件时,可以使用库存 ForeColorBackColor 属性或你自己的自定义颜色属性。 若要使用颜色属性,请调用 COleControl::TranslateColor 成员函数。 此函数的参数是颜色属性的值和可选的调色板句柄。 返回值是一个 COLORREF 值,可以传递给 GDI 函数,例如 SetTextColorCreateSolidBrush

通过分别调用GetForeColorGetBackColor函数来访问股票ForeColorBackColor属性的颜色值。

以下示例演示如何在绘制控件时使用这两种颜色属性。 它初始化临时 COLORREF 变量和 CBrush 调用对象 TranslateColor:一个使用 ForeColor 属性,另一个使用 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 类