VB与VC通信初探(一)

2016-02-19 12:56 6 1 收藏

下面请跟着图老师小编一起来了解下VB与VC通信初探(一),精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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 类型的表达式

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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 类型的表达式

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

来源:http://www.tulaoshi.com/n/20160219/1602477.html

延伸阅读
标签: PS PS教程
自从Photoshop 5.5捆邦ImageReady2推出以后,ImageReady这个专业网页图像处理软件开始为人熟悉并迅速被市场认可;今随着Photoshop 6.0的测试版向市场发放,也随之有了ImageReady 3.0 的测试版了。在探讨过PS6以后,下面我们来看看ImageReady3有什么新变化。 上图是ImageReady 3.0的新启动画面,看来比较新颖,有时代感。启动时可见需要初...
摘 要:本文着重阐述了网页开发中,通过灵活使用从JavaScript语言中访问Java的方法、从JavaScript中访问JavaScript小程序的方法与变量,以及在Java Applet小程序中使用JavaScript等技术,实现这几种网页开发语言的互相补充,以开发更完美的Web应用程序。 JavaScript是用于HTML环境的开发语言,提供了能够响应Web页面事件的脚本,可以...
精通 VC 与 MATLAB 联合编程 ——综合举例一 作者:邓科 工具:VC6.0 + MATLAB 6.5 实现功能:用户输入数据,完成数据的拟合 准备:在VC中设置库文件和头文件路径,参见联合编程 步骤: 1、建立一个名为ceshidll.m的M函数文件,该函数的功能是输入两组数完成两组数据的插值拟合,并将结果用图形表示: ceshidll....
随着越来越多手提电话和个人数字助理开始融入到信息高速公路之上,从移动设备上访问Web站点变得越来越重要。只有你实现移动设备与非移动设备互相通信的功能后,你设计的移动设备应用程序才可以称的上是真正有用的。在本文中, 我们将通过一个简单的例子来学习如何实现手机与Servlet的网络通信。该程序经tomcat4.0.6、J2ME的MIDP简表及SUN的...
标签: flash教程
一个例子简单的描述了如何通过GET方法向服务器端的ASP发送请求: _root. pushAction = function(URL) { this.loadVariables(URL, "GET"); } var ask = true; var pushURL = "http://localhost/test/return.asp?ask="+ ask; pushAction (pushURL); _root.onEnterFrame = fuction(){          &nbs...

经验教程

705

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部