COleControlMFC控件开发方面的帮助

来源:互联网 发布:农行客户端软件下载 编辑:程序博客网 时间:2024/05/16 07:42
 

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 禁止用户修改控件的特性 ThrowError OLE控件出错时发出信号


环境属性函数

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 指示用哪个特性页编辑一个特性