二、ActiveX控件的接口与使用 当控件自身的功能实现之后,接下来要做的工作是要实现控件与包容器之间的接口,也就是要定义控件的属性、方法和事件。属性用于控件和包容器之间简单的数据交换,用变量去实现,可以描述控件的模式,色彩和用户名等。方法的定义则实现了控件和包容器之间较复杂的相互操作,比如将包容器所需的大量数据从控件中整理取出,或是将包容器预先准备好的大量数据放到控件中使用等。事件类似于消息机制,描述控件在包容器中对鼠标单击、双击、移动等各类事件发生的响应。方法和事件都可用函数来实现。 Visual C++ 5.0的ClassWizard便于编程者进行属性、方法和事件的定义。打开项目,在ClassView视图下,可以看到Test 控件有两个与接口直接相关的类: _Dtest、_DTestEvents。选中它们,单击鼠标右键,使用Add Property、Add Me thod 及 Add Event菜单项,依据要求定义变量的类型、函数的参数和返回值,这样就给控件加进了应用所需的属性、方法和事件的定义。当然,还要回到TestCt l.cpp文件中相应的位置,并添加其实现代码。 利用系统提供的工具ActiveX Control Test Container可测试控件的属性、方法和事件使用的效果。启动Test Container并插入控件,操作过程中可以随时按下工具条上的Properties和Event log按钮以检查属性值及事件响应的记录。当控件被选中时,若按下Methods按钮,则可调用各种方法对应的函数,从而检查控件和包容器之间能否执行正确的互操作。 这里,我们给Test控件定义了两个简单而又必要的方法:LoadText方法将包容器准备好的文本数据交给控件,在编辑子窗口中显示;SaveText方法将用户输入并编辑好的文本数据整理交给包容器保存。它们的代码如下:
void CTestCtrl::LoadText(LPCTSTR Text) { // 参数Text指向传送给控件的文本数据 if (m_TestEdit.m_hWnd != NULL) m_TestEdit.SetWindowText( Text ); } BSTR CTestCtrl::SaveText() { CString strResult; if (m_TestEdit.m_hWnd != NULL) m_TestEdit.GetWindowText( strResult ); return strResult.AllocSysString(); // 返回的BSTR类型值即是从控件中传送出的文本数据 } |
如果在适当的时候调用这两个函数,则控件和包容器之间就可以进行基本的交流了。 本文着重讨论了在一个简单的ActiveX控件框架中添加工具条、编辑控制等多项控制的设计与实现,从而达到丰富控件应用功能的目的。在实际应用中,为了更好地结合不同环境下的各类应用程序,还必须对界面和功能作进一步的要求。假如我们想要开发一个Lotus Notes的应用程序,希望在Notes表单中能够包容一个功能完备的编辑器,它不仅能够输入和编辑文本,而且能够记录不同人在不同时间进行修改的全部信息。Notes本身提供的编辑器无法实现这些功能。但是,如果利用类似于上述的ActiveX控件,则只需对编辑子窗口中的数据进行适当的管理就可以实现了。 ActiveX技术的目的就在于加强各种环境下各类应用程序的有效结合,其应用必将越来越广泛,希望这里所讨论的技术对大家作进一步开发时能够有所帮助。  
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |