股票属性不同于自定义属性,因为它们已由类 COleControl
实现。
COleControl
包含支持控件通用属性的预定义成员函数。 一些常见属性包括控件的标题和前景和背景色。 有关其他股票属性的信息,请参阅本文后面的 “添加属性向导支持的股票属性 ”。 库存属性的调度映射条目始终以DISP_STOCKPROP为前缀。
本文介绍如何使用“添加属性向导”将库存属性(在本例中为 Caption)添加到 ActiveX 控件,并说明生成的代码修改。 主题包括:
-
注释
Visual Basic 自定义控件通常具有属性,如 Top、Left、Width、Height、Align、Tag、Name、TabIndex、TabStop 和 Parent。 但是,ActiveX 控件容器负责实现这些控件属性,因此 ActiveX 控件不应支持这些属性。
使用“添加属性向导”添加股票属性
添加股票属性所需的代码比添加自定义属性少,因为对属性的支持由自动 COleControl
处理。 以下过程演示如何将 stock Caption 属性添加到 ActiveX 控件框架,还可用于添加其他股票属性。 将所选股票属性名称替换为 Caption。
使用“添加属性向导”添加 stock Caption 属性
加载控件的项目。
在类视图中,展开控件的库节点。
右键单击控件(库节点的第二个节点)的接口节点以打开快捷菜单。
在快捷菜单中,单击“ 添加 ”,然后单击“ 添加属性”。
这将打开 “添加属性向导”。
在 “属性名称 ”框中,单击“ 标题”。
单击“完成”。
为库存属性添加属性向导更改
由于 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
。 如果要采取其他作来响应这种情况,请重写此函数。
颜色属性
绘制控件时,可以使用库存 ForeColor
和 BackColor
属性或你自己的自定义颜色属性。 若要使用颜色属性,请调用 COleControl::TranslateColor 成员函数。 此函数的参数是颜色属性的值和可选的调色板句柄。 返回值是一个 COLORREF 值,可以传递给 GDI 函数,例如 SetTextColor
和 CreateSolidBrush
。
通过分别调用GetForeColor
或GetBackColor
函数来访问股票ForeColor
和BackColor
属性的颜色值。
以下示例演示如何在绘制控件时使用这两种颜色属性。 它初始化临时 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 类