COleControl类是一个开发OLE控件的功能强大的
基类。它由CWnd类派生,继承了Windows
窗口对象的所有功能,并加上了OLE独有的功能,例如事件触发、支持方法和特性等。
OLE控件可以插入到OLE包容器中,并通过事件触发和包容器引发方法和特性的双向系统相互通讯和联系。注意,标准的OLE包容器仅支持OLE控件的基本功能,而不支持OLE控件的扩展特性。当在控件中采取某个动作,就会向包容器发出一个事件,称为事件触发。相反,包容器引发一系列的类似于C++
类的成员函数和
数据成员的方法和特性来与控件进行通讯。这种方法使开发者可以控制控件的外观,并在产生某些动作时通知包容器。
当使用无窗口激活时,包容器(它有一个窗口)将负责提供本来应由控件自己的窗口提供的服务。例如,如果你的控件需要查询键盘输入焦点、查询鼠标位置或获取一个
设备上下文等,都由包容器来提供支持。
当不能使用无窗口激活时,包容器会向控件的IOleInPlaceObjectWindowless界面(支持无窗口的IOleInPlaceObject的扩展)发送输入消息。在适当调整鼠标坐标后,COleControl实现这些该界面时通过控件的消息映射图分派这些消息。可以通过增加消息映射图的入口点,同处理普通的窗口消息一样处理这些消息。
例如在
文本框的栅格中,当光标在列间上下移动时,每个控件都先被就地激活,然后取消。这样不活动/活动切换的速度将直接影响滚动的速度。