龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VB与VC通信初探(一)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
在使用VB调用VC写的DLL的时候,可以实现一些VB不能实现或者很难实现的功能,但是,因为VB与VC之间的数据类型并不总是完全对应的,所以,在进行参数传递的时候,就需要进行类型转换

   在使用VB调用VC写的DLL的时候,可以实现一些VB不能实现或者很难实现的功能,但是,因为VB与VC之间的数据类型并不总是完全对应的,所以,在进行参数传递的时候,就需要进行类型转换了。下面我将通过逐步的推进的方法,来看看如何达到VB与VC之间的通信。

    首先,看一个简单的例子。

VC中的程序:

extern "C" _declspec(dllexport) void  ReadString(void)

{

//函数功能

   将这个VC程序编译成DLL程序供VB调用(假设生成的为commication.dll) 

     VB中的程序:

……………………

Private Declare Function ReadString Lib "commication.dll" ()

……………………

call ReadString

     在这里,我们实现了一个简单的通信,即在VC中写了一个DLL,然后再在VB中调用了这个DLL,但是,在这次的通信中,实际上他们之间没有传递任何数据,仅仅是VB调用了DLL,从而使得commication.dll中的函数ReadString()函数执行。这种通信实现是非常简单,所以他完成的功能也就非常的简单,然而我们的要求肯定不止于此。 

    现在就让我们来实现一个使用DLL来处理VB中的数据的例子,并且将处理结果返回给VB程序:

VC中的程序:

extern "C" _declspec(dllexport) bool  ReadString(bool receive)

if(receive==true)

 return true;

else

 return false;

VB中的程序:

……………………

Private Declare Function ReadString Lib "commication.dll" (ByVal send As Boolean) as Boolean

……………………

Dim result As Boolean

Dim send As Boolean

send = False

result = ReadString(send) 

If result Then

 MsgBox "The return value is 'true'"

Else

 MsgBox "The return value is 'false'"

End If 

精彩图集

赞助商链接