您的位置:首页精文荟萃软件资讯 → VB与VC混合编程中处理消息的方法

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

时间:2004/10/7 19:13:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



             现在越来越多的人采用VB与VC的混合编程:用VB快速开发出漂亮的界面以及外围处理程序,再用VC编写底层的各种操作,例如内存的操作、IO端口的操作等,VC中还可以嵌入汇编语言进行更底层的操作。
  一般的做法是将VC程序编译成DLL,在VB中用Declare语句声明DLL中的函数,例如:
  Declare Function SendCommand Lib ″c:\program files\devstudio\wjfprojects\Hr0506dllMnsr\debug\Hr0506dllMnsr.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 files\devstudio\wjfprojects\Hr0506dllMnsr\debug\ Hr0506dllMnsr.dll″ ((ByVal hWnd As Long) As Boolean
  ′传递text1的句柄
  SendhWnd(text1.hWnd)
  VC中://句柄接收函数
   declspec(dllexport) BOOL GethWnd(HWND hWnd1)
  { hWnd=hWnd1;
  if (hWnd==NULL)
  { return FALSE; }
  return TRUE;}
  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远程监控系统”中使用,效果很好。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本