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
- 上一篇:VB与VC通信初探(二)
- 下一篇:VC++删除浮动工具条中“关闭”按钮[图]