转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB与VC通信初探(一)         ★★★★

VB与VC通信初探(一)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1177 更新时间:2009/4/23 18:59:51

 

    在使用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

 

    在这次的通信过程中,我们还是实现了一个很简单的通行过程,在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       

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台