MFC ActiveX 控件:添加常用属性
常用属性与自定义属性的区别是,它们已通过类 COleControl
实现。 COleControl
包含支持控件的常见属性的预定义成员函数。 一些常见属性包括控件的描述文字以及前景色和背景色。 若要了解其他常用属性,请参阅本文稍后的添加属性向导支持的常用属性。 常用属性的调度映射条目始终采用 DISP_STOCKPROP 前缀。
本文介绍如何使用添加属性向导将常用属性(在本例中是描述文字)添加到 ActiveX 控件,并阐释了这导致的代码修改。 主题包括:
-
注意
Visual Basic 自定义控件通常具有 Top、Left、Width、Height、Align、Tag、Name、TabIndex、TabStop 和 Parent 等属性。 然而,由 ActiveX 控件容器负责实现这些控件属性,因此 ActiveX 控件不应支持这些属性。
使用添加属性向导来添加常用属性
添加常用属性所需的代码比添加自定义属性的少,因为对属性的支持会由 COleControl
自动处理。 以下过程演示了如何将常用的 Caption 属性添加到 ActiveX 控件框架,它还可用于添加其他常用属性。 将所选常用属性名称替换为 Caption。
若要使用添加属性向导添加常用的 Caption 属性
加载控件的项目。
在“类视图”中,展开控件的库节点。
右键单击控件的接口节点(库节点的第二个节点)以打开快捷菜单。
从快捷菜单中,单击“添加”,然后单击“添加属性”。
这会打开添加属性向导。
在“属性名称”框中,单击“Caption”。
单击“完成” 。
针对常用属性的添加属性向导变更
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
属性,也可使用你自己的自定义颜色属性。 若要使用颜色属性,请调用 COleControl::TranslateColor 成员函数。 此函数的参数是颜色属性的值和可选的调色板句柄。 返回值是可传递到 GDI 函数(例如 SetTextColor
和 CreateSolidBrush
)的 COLORREF 值。
可分别调用 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 类