COleControl

CObject
 └CCmdTarget
    └CWnd
       └COleControl

COleControl类是一个开发OLE控件的功能强大的基类。它由CWnd类派生,继承了Windows窗口对象的所有功能,并加上了OLE独有的功能,例如事件触发、支持方法和特性等。
OLE控件可以插入到OLE包容器中,并通过事件触发和包容器引发方法和特性的双向系统相互通讯和联系。注意,标准的OLE包容器仅支持OLE控件的基本功能,而不支持OLE控件的扩展特性。当在控件中采取某个动作,就会向包容器发出一个事件,称为事件触发。相反,包容器引发一系列的类似于C++类的成员函数和数据成员的方法和特性来与控件进行通讯。这种方法使开发者可以控制控件的外观,并在产生某些动作时通知包容器。
无窗口控件
OLE控件可在没有窗口的情况下使用。无窗口控件是十分有用的:
·无窗口控件可以是透明和无形的。
·无窗口控件减小了实例的尺寸和创建对象的时间。
控件并不需要窗口。一个窗口提供的服务可以容易地通过一个单一的共享窗口(通常是包容器的)和分派码的一位来提供。有一个窗口通常使对象的复杂度增加。
当使用无窗口激活时,包容器(它有一个窗口)将负责提供本来应由控件自己的窗口提供的服务。例如,如果你的控件需要查询键盘输入焦点、查询鼠标位置或获取一个设备上下文等,都由包容器来提供支持。
COleControl无窗口操作成员函数将调用包容器上的这些操作。
当不能使用无窗口激活时,包容器会向控件的IOleInPlaceObjectWindowless界面(支持无窗口的IOleInPlaceObject的扩展)发送输入消息。在适当调整鼠标坐标后,COleControl实现这些该界面时通过控件的消息映射图分派这些消息。可以通过增加消息映射图的入口点,同处理普通的窗口消息一样处理这些消息。
在无窗口控件中,通常需要使用COleControl成员函数来代替相应的成员函数或相关的Windows API函数。
只有在OLE控件对象活动时,它们也能创建窗口。但是对象进行不活动-活动切换的工作量增大,速度也会下降。这可能会引发一些问题:
例如在文本框的栅格中,当光标在列间上下移动时,每个控件都先被就地激活,然后取消。这样不活动/活动切换的速度将直接影响滚动的速度。
关于开发一个OLE控件框架的信息,请参阅联机文档“Visual C++程序员指南”中的“ActiveX控件”和“用ActiveX ControlWizard创建程序”。关于向一个基本框架基础上增加功能的信息,请参阅联机文档“Visual C++程序员指南”中的“建立一个ActiveX控件”。关于OLE控件优化的信息,包括无窗口和flicker-free控件,请参阅联机文档“Visual C++程序员指南”中的“ActiveX控件:优化”。
#include <afxctl.h>

请参阅:
COlePropertyPage, CFontHolder, CPictureHolder


COleControl类的成员

构造函数/析构函数
COleControl创建一个COleControl对象
RecreateControlWindow销毁并重建控件的窗口

初始化
InitializeIIDs将控件将要使用的IIDs通知基类
ResetStockProps初始化COleControl的标准特性为缺省值
ResetVersion将版本数设置为给定值
SetInitialSize设置一个OLE控件第一次在包容器中显示的尺寸

控件修改函数
GetControlFlags存取控件标志设置
IsModified判定控件的状态是否已经改变
SetModifiedFlag改变一个控件的修改状态
ExchangeExtent串行化控件的宽度和高度
ExchangeStockProps串行化控件的标准特性
ExchangeVersion串行化控件的版本号
IsConvertingVBX允许OLE控件的指定装入
SerializeExtent串行化或初始化控件的显示空间
SerializeStockProps串行化或初始化COleControl标准特性
SerializeVersion串行化或初始化控件的版本信息
SetModifiedFlag改变控件的修改状态
WillAmbientsBeValidDuringLoad决定环境特性在控件下次装入时是否可用

更新/绘画函数
DoSuperclassPaint重画一个从Windows控件派生的OLE控件
InvalidateControl使一个已经显示的控件的区域无效,导致重画控件
IsOptimizedDraw指示包容器是否支持当前绘画操作的优化
SelectFontObject为一个设备上下文选定自定义Font特性
SelectStockFont为一个设备上下文选定标准Font特性
TranslateColor将OLE_COLOR值转换为一个COLORREF值

分派异常
GetNotSupported禁止用户存取控件的特性
SetNotPermitted指示编辑请求失败
SetNotSupported禁止用户修改控件的特性
ThrowErrorOLE控件出错时发出信号

环境属性函数
AmbientBackColor返回环境BackColor特性的值
AmbientDisplayName返回由包容器说明的控件名称
AmbientForeColor返回环境ForeColor特性的值
AmbientFont返回环境Font特性的值
AmbientLocaleID返回包容器的本地标识(ID)
AmbientScaleUnits返回包容器使用的单位名称
AmbientShowGrabHandles决定是否要显示抓取句柄
AmbientShowHatching决定是否显示阴影
AmbientTextAlign返回包容器说明的文本对齐方式
AmbientUIDead决定控件是否要响应用户动作
AmbientUserMode决定包容器模式
GetAmbientProperty返回指定的环境变量值

事件触发函数
FireClick触发标准Click事件
FireDblClick触发标准DblClick事件
FireError触发标准Error事件FireEvent触发一个自定义事件
FireKeyDown触发标准KeyDown事件
FireKeyPress触发标准KeyPress事件
FireKeyUp触发标准KeyUp事件
FireMouseDown触发标准MouseDown事件
FireMouseMove触发标准MouseMove事件
FireMouseUp触发标准MouseUp事件
FireReadyStateChange当控件的就绪状态改变时,触发一个事件

标准方法和属性
DoClick执行标准DoClick方法
Refresh重画控件外观
GetAppearance返回标准Appearance特性的值
SetAppearance设置标准Appearance特性的值
GetBackColor返回标准BackColor特性的值
SetBackColor设置标准BackColor特性的值
GetBorderStyle返回标准BorderStyle特性的值
SetBorderStyle设置标准BorderStyle特性的值
GetEnabled发挥标准Enabled 特性的值
SetEnabled设置标准Enabled 特性的值
GetForeColor返回标准ForeColor特性的值
SetForeColor设置标准ForeColor特性的值
GetFont返回标准Font特性的值
SetFont设置标准Font特性的值
GetText返回标准Text或Caption特性的值
SetText设置标准Text或Caption特性的值
GetFontTextMetrics返回CFontHolder对象的度量
GetStockTextMetrics返回标准Font特性的度量
InternalGetFont返回CFontHolder对象的标准Font特性的值
InternalGetText获取标准Text或Caption特性
SelectStockFont选择控件的标准Font特性到设备上下文中
GetHwnd返回标准hWnd特性的值

OLE控件的尺寸函数
GetControlSize返回OLE控件的位置和尺寸
SetControlSize设置OLE控件的位置和尺寸
GetRectInContainer返回控件相对它的包容器的矩形边界
SetRectInContainer设置控件相对它的包容器的矩形边界

OLE数据绑定函数
BoundPropertyChanged通知包容器,说明绑定特性已经改变
BoundPropertyRequestEdit申请编辑特性值的许可权限

简单框架函数
EnableSimpleFrame使控件支持简单框架

OLE控件位置函数
ControlInfoChanged控件处理的助记符改变后调用该函数
GetClientSite查询在包容器内的对象的当前客户区指针
GetExtendedControl获取属于该包容器的一个扩展控件对象的指针
LockInPlaceActive决定控件能否被包容器取消
TransformCoords在包容器和控件之间变换坐标

模态对话框函数
PreModalDialog通知包容器,说明将显示一个模态对话框
PostModalDialog通知包容器,说明一个模态对话框已被关闭

无窗口操作
ClipCaretRect一个脱字符号被控件覆盖,调整它的矩形边界
GetCapture决定一个无窗口、活动控件对象是否获得鼠标捕获焦点
GetClientRect获取控件客户区的尺寸
GetDC提供无窗口控件从它的包容器获得设备上下文的途径
GetFocus决定一个控件是否具有输入焦点
GetWindowlessDropTarget覆盖该函数,允许无窗口控件成为拖放操作的目标
InvalidateRgn使包容器窗口的客户区在给定区域内无效。用于重画该区域内的无窗口控件
OnWindowlessMessage处理无窗口控件的窗口消息(鼠标和键盘消息除外)
ReleaseCapture释放鼠标捕获焦点
ReleaseDC释放无窗口控件的包容器的显示设备上下文
ScrollWindow允许无窗口控件在屏幕上滚动它的活动图象的一个区域
SetCapture使控件的包容器窗口取代控件的鼠标捕获焦点
SetFocus使控件的包容器窗口取代控件的输入焦点

非活动指针处理函数
ClientToParent将相对控件原点的点平移到相对它的包容器原点的点
GetActivationPolicy改变支持IPointerInactive界面的控件的缺省激活行为
GetClientOffset获取控件矩形区域左上角和它的客户区左上角的差别
OnInactiveMouseMove覆盖该函数,使鼠标指示下的非活动控件的包容器向控件分派WM_MOUSEMOVE消息
OnInactiveSetCursor覆盖该函数,使鼠标指示下的非活动控件的包容器像控件分派WM_SETCURSOR消息
ParentToClient将相对包容器原点的点平移到相对它的控件原点的点

异步控制函数
GetReadyState返回控件的就绪状态
InternalSetReadyState设置控件的就绪状态,触发就绪状态改变事件
Load重新设置先前的异步数据,初始化新装控件异步特性

可覆盖的函数
DisplayError向控件用户显示标准Error事件
DoPropExchange串行化COleControl对象特性
GetClassID获取控件的OLE类标识
GetMessageString为菜单项提供状态栏文本
IsSubclassedControl判定控件是否为Windows控件的子类
OnClick调用它触发标准Click事件
OnDoVerb执行一个控件动词后调用该函数
OnDraw当用户要求重画时调用该函数
OnDrawMetaFile当控件请求使用一个元文件设备上下文重画时,包容器调用该函数
OnEdit包容器调用以激活OLE控件的用户界面

可覆盖的函数
OnEnumVerbs由包容器调用以为控件的动词技术
OnEventAdvise当事件处理函数和控件建立或断开连接时调用该函数
OnKeyDownEvent当触发标准KeyDown事件后调用该函数
OnKeyPressEvent当触发标准KeyPress事件后调用该函数
OnKeyUpEvent当触发标准KeyUp事件后调用该函数
OnProperties当执行控件的"Properties"动词后调用该函数
OnResetState设置控件特性为缺省值

改变通知函数
OnAppearanceChanged当标准Appearance特性改变时调用该函数
OnBackColorChanged当标准BackColor特性改变时调用该函数
OnBorderStyleChanged当标准BorderStyle特性改变时调用该函数
OnEnabledChanged当标准Enabled特性改变时调用该函数
OnFontChanged当标准Font特性改变时调用该函数
OnForeColorChanged当标准ForeColor特性改变时调用该函数
OnTextChanged当标准Text或Caption特性改变时调用该函数

OLE界面通知函数
OnAmbientPropertyChange当环境特性改变时调用该函数
OnClose通知控件,说明调用了IOleControl::Close
OnFreezeEvents当控件事件冻结或解冻时调用该函数
OnGetControlInfo向包容器提供助记符信息
OnMnemonic当控件的助记符输入时调用该函数
OnRenderData框架调用以获取指定格式的数据
OnRenderFileData框架调用以从文件获取指定格式的数据
OnRenderGlobalData框架调用以从全局内存获取指定格式的数据
OnSetClientSite通知控件,说明调用了IOleControl::SetClientSite
OnSetData将控件的数据替换成另一个值
OnSetExtent当控件的范围改变时调用该函数
OnSetObjectRects当控件的维改变时调用该函数

可覆盖的IViewObject界面通知函数
OnGetColorSet通知控件,说明调用了IOleObject::GetColorSet
OnGetNaturalExtent覆盖该函数以获取控件最接近计划尺寸和扩展模式的显示尺寸
OnGetViewExtent覆盖该函数以获取控件显示区域的尺寸
OnGetViewRect覆盖该函数将控件尺寸转换为从以指定位置开始的矩形
OnGetViewStatus覆盖该函数以获取控件的视图状态
OnQueryHitPoint覆盖该函数以询问控件的显示是否覆盖了一个指定点
OnQueryHitRect覆盖该函数以询问控件的显示是否覆盖了一个指定矩形内的任意点

就地激活函数
OnGetInPlaceMenu请求将和包容器菜单合并的控件菜单的句柄
OnHideToolBars当控件UI取消时,包容器调用该函数
OnShowToolBars当控件UI 激活时,包容器调用该函数

属性浏览函数
OnGetDisplayString调用该函数以取得代表一个特性值的字符串
OnGetPredefinedStrings返回代表一个特性的所有可能值的一组字符串
OnGetPredefinedValue返回对应一个预定义字符串的值
OnMapPropertyToPage指示用哪个特性页编辑一个特性