网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
如何用VC++和Visual Foxpro进行ActiveX数据通讯
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

作者:粟利民 孙强

  摘要 本文描述了如何利用自动服务器 Active Automation,在VC++
中与Visual Foxpro 进行数据通讯的方法。通过自动服务器,圆满地解决
了各种数据类型的交换问题

  关键词 VC++,Visual Foxpro,ActiveX Automation,数据通讯。

在进行软件开发的过程中,如何在不同的编程工具之间进行数据交换和通
讯,需要进行不断的探索和总结。我们在开发机械CAD仿真软件的过程中,
遇到了在VC++中读取和修改Visual Foxpro 中数据的问题。经过许多次的
试验,我们通过采用自动服务器(ActiveX Automation)的方法圆满解决
了这个问题。

  自动服务器, 以前称为 OLE Automation, 后来称为 ActiveX OLE
Automation, 就是编写能被其他程序调用的代码。其他程序不是以DLL的
孤立方式而是直接调用自动服务器的用户代码。这其中比较难理解的概念
是:自动服务器用户代码向其他应用程序揭示了属性(变量)和方法(函
数)。

  以下将以整型和双精度(对浮点型同样适用)的数据传递为例,讲述
如何用ActiveX Automation在VC++和Visual Foxpro 之间进行数据通讯,
例子中的编程工具为VC++ 5.0和Visual Foxpro 5.0。

  一.在Visual Foxpro中创建自动服务器

  1.在Visual Foxpro中定义服务器类(此例中为CDATA类)

  首先在某目录下新建一工程,在工程管理器中选择代码栏,同一目录
下新建一程序(如MyServer.prg),并在此程序文件中定义服务器类。

     *File Name: MyServer.prg
     DEFINE CLASS CData AS Custom OLEPUBLIC
      *对VC++而言, para1为整型, para2为double型
      para1=123
      para2=123.123
      PROCEDURE ChangeData
        this.para1=this.para1*2
        this.para2=this.para2*2
        RETURN
      ENDPROC
     ENDDEFINE

  2.将上述程序联编为可执行程序(如MyServer.exe)

  选中程序MyServer,点击“连编”按钮,选择“连编可执行程序”选
项,并按确定,便可生成可执行程序

  二.在VC++中对自动服务器进行测试

  1.关闭Visual Foxpro,在VC++中选择菜单项“File-New”,再选择
“Projects”中的“MFC AppWizard (exe)” 选项,随后按默认方式生成
“Dialog Based”的工程项目(此例中工程名为MyTest)。

  2.在MyTest.cpp中的APP类的InitInstance()函数开头加入OLE使能。

       BOOL CMyTestApp::InitInstance()
      {
           BOOL OleEnable=AfxOleInit();
           if(!OleEnable) return FALSE;
          ……
      }

  3.在ClassWizard中选“Automation”中的“Add Class-From a type
library”。在“ Import from type library”对话框中找到刚才所创建
的Visual Foxpro工程目录下的tlb文件(如MyServer.tlb)并选择“打开”
按钮,会有提示说明将要从Lib中生成CDATA类,点击OK按钮加以确认,将
自动在项目中加入与CDATA类有关的文件MyServer.cpp 和MyServer.h。在
ClassView 中可查看 CDATA 类的函数,如 GetPara1()、 SetPara1() 和
CHANGEDATA()等。这里要注意类名CDATA和函数名CHANGEDATA() 的大小写
请参看具体的头文件MyServer.h。

  4.在对话框类(此例中为CMyTestDlg)的头文件MyTestDlg.h的开头
部分,将CDATA类的头文件MyServer.h包含进来。随后定义CDATA类的实例
m_data作为对话框类的成员变量。

  // MyTestDlg.h : header file
  #include "myserver.h"
   ……
  class CMyTestDlg : public CDialog
  {
    // Construction
  

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号