正在阅读:VB与VC通信初探(二)VB与VC通信初探(二)

2004-05-11 10:21 出处:CSDN 作者:eliner 责任编辑:linjixiong
在通过DLL实现VB与VC的过程中,一般的简单的通信过程很容易建立。在《VB与VC通信初探(一)》中,我已经把基本的通信过程给描述了一下,但是,有些时候,事件的发展并不总是一帆风顺的,当我们以为可以轻松的实现VB与VC的通信的时候,就经常发生这样的情况,还是先看看例子再说。      VC中的程序:      extern "C" _declspec(dllexport) bool ReadString(LPCSTR lpString)      {      char str[]="Hello World!";      if(strcmp(lpString,str)==0)      return true ;      else   return false ;      }      VB中的程序:      Private Declare Function ReadString Lib "commication.dll" (ByVal send As String) as Boolean      ……………………      Dim result As Boolean   Dim send As String      send =”Hello,World!”      result = ReadString(send)      If result Then      MsgBox "The return value is 'true'"      Else      MsgBox "The return value is 'false'"      End If      可以上机运行这个程序,一样的,实现了通信的功能,但是这里有几个地方是应该引起我们注意的,首先就是在VB中声明传递的字符串参数的时候,按照常规的理解,好像应该是传递地址才对,但是这里使用的方法是ByVal,为什么?原因比较复杂,但是可以简单的来分析一下,在VB中,使用的字符串实际上是BSTR类型的,它是由自动化(以前被称为OLE Automation)定义的数据类型。一个BSTR由头部和字符串组成,头部包含了字符串的长度信息,字符串中可以包含嵌入的null值。大部分的BSTR是 Unicode的,即每个字符需要两个字节。BSTR通常以两字节的两个null字符结束。下图表示 了一个BSTR类型的字符串。   
察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品