AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

ActiveX控件中多控制的设计与实现

51自学网 2015-08-30 http://www.wanshiok.com

  二、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不保证资料的完整性。

上一篇:Windows 9X硬件中断设备驱动程序的开发  下一篇:向CCmdTarget的派生类添加一个接口的实现