您的当前位置:我要购书网>在线阅读>VC++/C#/C

vb与vc通信初探(一)

来源:互联网  作者:我要购书网信息中心  发布:我要购物网收集整理  发布时间:2006-8-31 人气:199

在使用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 BooleanDim 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 在这次的通信过程中,我们还是实现了一个很简单的通行过程,在DLL中,根据VB调用的时候传递进来的参数将接收到的参数返回给了VB调用程序,虽然简单,但是已经实现了VB与DLL之间的数据传递了,在这里要注意的是它们之间的数据类型,布尔类型的数据在VC中使用的关键字是Boolean,而在VC中使用的关键字则是bool。 由于VB与VC之间的数据类型没有相同的关键字,为了方便,下面列出常用数据类型在VC与VB中分别使用的关键字以及它们之间的对应关系: c中的数据类型 VB中的声明 结果 ATOM ByVal variable As Integer 结果为Integer 类型的表达式

BOOL ByVal variable As Boolean 结果为 Long 类型的表达式

BYTE ByVal variable As Byte 结果为 Byte 类型的表达式

CHAR ByVal variable As Byte 结果为 Byte 类型的表达式

COLORREF ByVal variable As Long 结果为 Long 类型的表达式

DWORD ByVal variable As Long 结果为 Long 类型的表达式

HWND, HDC, HMENU ByVal variable As Long 结果为 Long 类型的表达式等Windows 句柄

INT, UINT ByVal variable As Long 结果为 Long 类型的表达式

LONG ByVal variable As Long 结果为 Long 类型的表达式

LPARAM ByVal variable As Long 结果为 Long 类型的表达式

LPDWORD variable As Long 结果为 Long 类型的表达式

LPINT, LPUINT variable As Long 结果为 Long 类型的表达式

LPRECT variable As type 自定义类型的任意变量
LPSTR, LPCSTR ByVal variable As String 结果为 String 类型的表达式

LPVOID variable As Any 任何变量(在传递字符串的时候使用ByVal)

LPWORD variable As Integer 结果为Integer 类型的表达式

LRESULT ByVal variable As Long 结果为 Long 类型的表达式

NULL As Any 或 ByVal Nothing 或 ByVal variable As Long ByVal 0& 或 VBNullString

SHORT ByVal variable As Integer 结果为Integer 类型的表达式

VOID Sub procedure 不可用

WORD ByVal variable As Integer 结果为Integer 类型的表达式

WPARAM ByVal variable As Long 结果为 Long 类型的表达式

好了,现在我们已经建立了基本的通信模式了,并且实现了两个简单的通信过程,该休息一下了,之后再来看看更复杂的通信该如何去实现了!(待续)

相关文章
· vb打造超酷个性化菜单(五)
· vb实现sql server数据库备份/恢复
· vb程序实现windowsxp效果的界面!!
· vb中使用excel输出
· vb自动登陆网络站点详解(四):在webbrowser中..
· vb自动登陆网络站点详解(三):internet exp..
· vb自动登陆网络站点详解(二):inet控件与webbr..
· vb打造超酷个性化菜单(六)
· vb打造超酷个性化菜单(一)
· vb与vc通信初探(一)
热点文章
%>
· creating user controls
· 提高fastreplace速度 (fstrrep.pas)
· asc ii 完整码表及简介
· 自动生成拼音(汉字反查到拼音)
· sql2000无法安装的解决办法
· 浏览器集成教学 自定义浏览器
· vc++技术内幕(第四版)笔记(第7章)
· mysql5.0中文乱码解决方案
· sql server日期计算
· vc下利用ado连接access数据库
 淘宝旺旺:我要购书网上书店『图书目录
本购书中心地址: 杭州市延安路111号清波商厦南楼D座(总部) 上海市闸北区老沪太路网上购书中心(沪部),  邮编:310002
电子邮件:books@51goushu.com  经营许可证编号:沪ICP备06038574号
版权所有 2003-2008 © All Rights Reserved .购书网