VB与VC混合编程中处理消息的方法

2016-02-19 15:46 2 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

  现在越来越多的人采用VB与VC的混合编程:用VB快速开发出漂亮的界面以及外围处理程序,再用VC编写底层的各种操作,例如内存的操作、IO端口的操作等,VC中还可以嵌入汇编语言进行更底层的操作。

  一般的做法是将VC程序编译成DLL,在VB中用Declare语句声明DLL中的函数,例如:

  Declare Function SendCommand Lib ″c:program filesdevstudiowjfprojectsHr0506dllMnsrdebugHr0506dllMnsr.dll″(CmdNum As Integer) As Boolean

  声明以后,函数SendCommand 就可以当作VB自己的函数使用了。

  但是,怎样将VC中的各种消息(例如各种底层的状态)及时通知VB并且VB能够及时处理呢?这是VB的一个缺陷:不能方便地处理自定义的Windows消息。例如在VC中自定义了两条消息:MW_TAPI_DATACOME,MW_TAPI_BUSY,在C语言中,用PostMessage(hWnd,MW_TAPI_CONNECTED,0,0);语句可以很方便地将MW_TAPI_CONNECTED消息传递给窗体(窗体句柄为hWnd),在主回调函数中就可以处理了。但是要把这条消息传递给VB,并让VB处理这条消息,并不太容易。虽然在VB5.0以上的版本中,可以定义自己的事件(EVENT),但比较麻烦。这里介绍一种简单的方法,让VB巧妙地处理自定义的消息:

  1.首先将VB窗体中TextBox控件Text1的句柄传递给DLL(注意:VB中的TextBox控件有hWnd属性)。

  VB中: ′声明DLL中的函数

  Declare Function SendhWnd Lib ″c:program filesdevstudiowjfprojectsHr0506dllMnsrdebug Hr0506dllMnsr.dll″ ((ByVal hWnd As Long) As Boolean

  ′传递text1的句柄

  SendhWnd(text1.hWnd)

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

  VC中://句柄接收函数

  

   declspec(dllexport) BOOL GethWnd(HWND hWnd1)  { hWnd=hWnd1;  if (hWnd==NULL)  { return FALSE; }  return TRUE;}

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

  2.在VC中用API函数SetWindowText取代PostMessage直接发送消息给VB中的Text1控件:

  SetWindowText(hWnd,″ MW_TAPI_DATACOME ″);

  3.在Text1_Change事件中处理消息:

  

  Private Sub Text1_Change()  Select case Text1.text  case W_TAPI_DATACOME:  ′消息处理语句  case MW_TAPI_BUSY:  ′消息处理语句  default:  ′其他处理语句  End Select  End Sub

  以? 法在作者编写的TAPI远程监控系统中使用,效果很好。

来源:https://www.tulaoshi.com/n/20160219/1610365.html

延伸阅读
   在使用VB调用VC写的DLL的时候,可以实现一些VB不能实现或者很难实现的功能,但是,因为VB与VC之间的数据类型并不总是完全对应的,所以,在进行参数传递的时候,就需要进行类型转换了。下面我将通过逐步的推进的方法,来看看如何达到VB与VC之间的通信。     首先,看一个简单的例子。 VC中的程序: extern "C" _...
1、windows的消息驱动体系 在windows系统中,消息传递是实现对乡间通信和控制的主要手段。可以额系统都以消息驱动的方式工作。系统中发生的用户输入操作、显示信息的改变、系统环境参数变化等所有时间都以系统定义消息的形式出现在相关的应用程序和窗口。所以程序设计的主要任务就是为这些消息的处理设计代码。 在应用程序中,发...
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。 消息本身是作为一个记录传递...
前面,我们分析了消息的基本理论和基本的函数及用法,接下来,我们将进一步讨论消息传递在MFC中的实现。 MFC消息的处理实现方式 初看MFC中的各种消息,以及在头脑中根深蒂固的C++的影响,我们可能很自然的就会想到利用C++的三大特性之一:虚拟机制来实现消息的传递,但是经过分析,我们看到事情并不是想我们想象的那样,在MFC中消息...
Matcom是mathTools公司推出的一个能将M文件转化成相同功能C++代码的工具。相比Matlab自带的编译器Compiler,用Matcom转化代码要简单和方便 得多。本文将结合作者编程经验,以VC6.0和Matcom为例,详细介绍如何利用Matcom进行VC与Matlab的联合编程。 Matcom安装安装Matcom前要已求安装VC6.0。在安装过程中出现选择编译器对话框,选择是...

经验教程

685

收藏

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