dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
如何用VC++和Visual Foxpro进行ActiveX数据通讯
来源:不详     作者:    

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

  关键词 V,Visual Foxpro,ActiveX Automation,数据通讯

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

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

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

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

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

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

     *File Name: MyServer.prg

     DEFINE CLASS CData AS Custom OLEPUBLIC

      *对V而言, 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,点击“连编”按钮,选择“连编可执行程序”选项,并按确定,便可生成可执行程序。

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

  1.关闭Visual Foxpro,在V中选择菜单项“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

        public:

           CMyTestDlg(CWnd* pParent = NULL); // standard constructor

        private:

           CDATA m_data; //定义CDATA类的实例m_data

        ……

       }

       ……

  5.在对话框的初始化部分(如InitDialog()中)加入

      m_data.CreateDispatch(“MyServer.CDATA);

[1]  

 

 

上一篇:如何获取某个进程的主窗口以及创建进程的程序名?   下一篇:如何自动截获输出到打印机的文本数据
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·如何获取某个进程的主窗口以及创
·如何自动截获输出到打印机的文本
·如何编写控制面板程序
·利用模板技术简化VC中的代码
·在MFC扩展DLL中输出对话框
·用Sockets接收和转换数字和字符
·改造MFC编写的控件在Win32ASM中
·用VC存取数据库中的大对象
·Toolbar制作菜单条过程详解
·VC编程实现文本语音转换
·MFC应用程序框架入门
·利用WebBrowser控件创建自己的浏
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763