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

如何用VC++和Visual Foxpro进行ActiveX数据通讯

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

 

  6.使用自动服务器的通讯编程

此例中,我们在对话框中设置一命令按钮“Test”,通过点击该按钮来对自动服务器进行测试。

void CMyTestDlg::OnButtonTest()

{

    //首先利用CDATA类的GetPara1()等取值函数取出Foxpro中的变量值,

    //再利用CDATA类SetPara1()等赋值函数来修改Foxpro中的这些变量值

    //也可以在VC++中调用CDATA类的函数CHANGEDATA()来修改变量值

    //定义tagVARIANT型变量,请参看有关tagVARINAT的帮助

    tagVARIANT mypara1, mypara2;

    mypara1=m_data.GetPara1();  //读取Foxpro中的变量值para1

    mypara2=m_data.GetPara2();  //读取Foxpro中的变量值para2

    //检验读取数据是否正确(Foxpro设定为123和123.123)

    if(mypara1.iVal==123)

       MessageBox("mypara1.iVal=123");

    if(mypara2.dblVal==123.123)

       MessageBox("mypara2.dblVal=123.123");

 

    //修改这些变量值(也可用调用CHANGEDATA()的方式来修改变量值)

    mypara1.iVal=mypara1.iVal*2; //整型变量乘以2

    mypara2.dblVal=mypara2.dblVal*2.0; //double型变量也乘以2

    m_data.SetPara1(mypara1);   //向Foxpro赋值

    m_data.SetPara2(mypara2);

  //再次读取Foxpro中的变量值

    mypara1=m_data.GetPara1();

    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。

  以上是我们软件开发小组在实际编程中总结出的数据通讯的方法,有关其他类型如字符串的数据传递则比较复杂些。鉴于篇幅的问题,在此我们不再一一陈述,有兴趣的同行和朋友可与我们联系,共同探讨和交流编程的心得和方法技巧。

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。

上一篇:如何获取某个进程的主窗口以及创建进程的程序名?  下一篇:如何自动截获输出到打印机的文本数据