自动服务器,以前称为OLEAutomation,后来称为ActiveX

上传人:ldj****22 文档编号:31318742 上传时间:2018-02-06 格式:DOC 页数:3 大小:36.50KB
返回 下载 相关 举报
自动服务器,以前称为OLEAutomation,后来称为ActiveX_第1页
第1页 / 共3页
自动服务器,以前称为OLEAutomation,后来称为ActiveX_第2页
第2页 / 共3页
自动服务器,以前称为OLEAutomation,后来称为ActiveX_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《自动服务器,以前称为OLEAutomation,后来称为ActiveX》由会员分享,可在线阅读,更多相关《自动服务器,以前称为OLEAutomation,后来称为ActiveX(3页珍藏版)》请在金锄头文库上搜索。

1、自动服务器,以前称为 OLE Automation,后来称为 ActiveX OLE Automation,就是编写能被其他程序调用的代码。其他程序不是以 DLL 的孤立方式而是直接调用自动服务器的用户代码。这其中比较难理解的概念是:自动服务器用户代码向其他应用程序揭示了属性(变量)和方法(函数)。以下将以整型和双精度(对浮点型同样适用)的数据传递为例,讲述如何用 ActiveX Automation在 VC+和 Visual Foxpro 之间进行数据通讯,例子中的编程工具为 VC+ 5.0和 Visual Foxpro 5.0。 - 一在 Visual Foxpro 中创建自动服务器 -

2、1 在 Visual Foxpro 中定义服务器类(此例中为 CDATA 类)首先在某目录下新建一工程,在工程管理器中选择代码栏,同一目录下新建一程序(如MyServer.prg),并在此程序文件中定义服务器类。 *File Name: MyServer.prgDEFINE CLASS CData AS Custom OLEPUBLIC*对 VC+而言, para1 为整型, para2 为 double 型para1=123para2=123.123PROCEDURE ChangeDatathis.para1=this.para1*2this.para2=this.para2*2RETURN

3、ENDPROCENDDEFINE- 2 将上述程序联编为可执行程序(如 MyServer.exe) - 选中程序 MyServer,点击连编可执行程序选项,并按确定,便可生成可执行程序。 - 二在 VC+中对自动服务器进行测试 - 1关闭 Visual Foxpro,在 VC+中选择菜单项File-NewMFC AppWizard (exe)的工程项目(此例中工程名为 MyTest)。 - 2在 MyTest.cpp 中的 APP 类的 InitInstance()函数开头加入 OLE 使能 BOOL CMyTestApp:InitInstance()BOOL OleEnable=AfxOle

4、Init();if(!OleEnable) return FALSE; - 3在 ClassWizard 中选Add Class-From a type libraryImport from type library对话框中找到刚才所创建的 Visual Foxpro 工程目录下的 tlb文件(如 MyServer.tlb)并选择按钮,会有提示说明将要从 Lib 中生成 CDATA 类,点击 OK 按钮加以确认,将自动在项目中加入与 CDATA类有关的文件 MyServer.cpp 和 MyServer.h。在 ClassView 中可查看 CDATA 类的函数,如 GetPara1()、Se

5、tPara1()和 CHANGEDATA()等。这里要注意类名CDATA 和函数名 CHANGEDATA()的大小写请参看具体的头文件 MyServer.h。 - 4在对话框类(此例中为 CMyTestDlg)的头文件 MyTestDlg.h 的开头部分,将 CDATA 类的头文件 MyServer.h 包含进来。随后定义 CDATA 类的实例m_data 作为对话框类的成员变量。 / MyTestDlg.h : header file#include myserver.hclass CMyTestDlg : public CDialog/ Constructionpublic:CMyTest

6、Dlg(CWnd* pParent = NULL);/ standard constructorprivate:CDATA m_data; /定义 CDATA 类的实例 m_data- 5在对话框的初始化部分(如 InitDialog()函数中)加入 m_data.CreateDispatch(- 6使用自动服务器的通讯编程 - 此例中,我们在对话框中设置一命令按钮,通过点击该按钮来对自动服务器进行测试。 void CMyTestDlg:OnButtonTest() /首先利用 CDATA 类的 GetPara1()等取值函数取出 Foxpro 中的变量值,/再利用 CDATA 类 SetPa

7、ra1()等赋值函数来修改 Foxpro 中的这些变量值/也可以在 VC+中调用 CDATA类的函数 CHANGEDATA()来修改变量值/定义 tagVARIANT 型变量,请参看有关 tagVARINAT 的帮助tagVARIANT mypara1, mypara2;mypara1=m_data.GetPara1();/读取 Foxpro 中的变量值 para1mypara2=m_data.GetPara2();/读取 Foxpro 中的变量值 para2/检验读取数据是否正确(Foxpro 设定为 123 和 123.123)if(mypara1.iVal=123)MessageBox(

8、mypara1.iVal=123);if(mypara2.dblVal=123.123)MessageBox(mypara2.dblVal=123.123);/修改这些变量值(也可用调用CHANGEDATA()的方式来修改变量值)mypara1.iVal=mypara1.iVal*2;/整型变量乘以 2mypara2.dblVal=mypara2.dblVal*2.0;/double 型变量也乘以 2m_data.SetPara1(mypara1); /向 Foxpro 赋值m_data.SetPara2(mypara2);/再次读取 Foxpro 中的变量值mypara1=m_data.Ge

9、tPara1();mypara2=m_data.GetPara2();/检验修改数据是否正确(应改为 246 和 246.246)if(mypara1.iVal=246)MessageBox(mypara1.iVal=246);if(mypara2.dblVal=246.246)MessageBox(mypara2.dblVal=246.246);- 上面讲述在 VC+中如何与 Visual Foxpro 进行整型和双精度型变量的数据通讯的方法。通过查看 tagVARIANT 结构的帮助文件,可以看到其中有一个成员为 VARTYPE vt。可以说 vt 是非常重要的,在 VC+中读取 Foxpro 中的数据后,vt 的值就决定了其数据的类型。在上例中,mypara1.vt 等于 3 而 mypara2.vt等于 5,表示它们的数据类型分别为整型和双精度型。在 VC+中也可根据tagVARIANT 变量的 vt 值来判断所读取的数据的确切类型。我们还可以看到,不同类型的数据,在 VC+中的访问方式也有所不同。如整型用 iVal,而双精度型用 dblVal,上例中分别为 mypara1.iVal 和 mypara2.dblVal。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号