·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
您现在的位置:天新网 > 软件开发 > 开发语言 > C++ Builder
C++ Builder中消息处理过程及应用
http://www.21tx.com 2003年05月09日 C++ Builder开发者

1 2 下一页

  C++ Builder作为一种RAD方式的程序开发工具,其全新的可视化编程环境、面向组件的开发模式无疑会大大地提高编程效率。它对繁杂的Windows 消息及API作了较全面的封装,编程者在大多数情况下不需理会Windows消息的细节,只要将心思放在组件的事件处理函数上即可。然而,毕竟Windows操作系统是一个以消息驱动的系统,运行其上的应用程序,自然无法脱离系统之外,因此掌握并运用消息处理,对一些问题的处理会有事半功倍的效果。

  尽管C++ BuilderVCL控件封装了大多数常用的消息,C++ Builder所提供的事件处理能力也具备了相当程度的完备性,但当处理C++ Builder 未定义的Windows消息或自定义消息时,掌握C++ Builder 的内部消息处理机制还是十分必要的。下面,从Windows 操作系统消息驱动机制开始,进而探讨C++ Builder的VCL控件中消息的封装、传递和处理机制,最后以新增消息处理过程的应用实例作为对所讲内容的验证和实践。

  一、Windows 消息驱动机制

  Windows是以消息驱动的操作系统,Windows 消息提供了应用程序与应用程序以及应用程序与Windows系统之间进行通讯的手段。

  Windows 中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。

  消息循环代码是应用程序中主函数winmain ( )中类似如下的程序段:

  while(GetMessage(&&msg,NULL,NULL,NULL))

  { //从消息队列中取得消息

  TranslateMessage(&&msg);

  //检索并生成字符消息WM_CHAR

  DispatchMessage(&&msg);

  //将消息发送给相应的窗口函数

   }

  由此可见,所谓“消息循环”,实际是程序循环。

  Windows 应用程序创建的每个窗口都在系统核心注册一个相应的窗口函数,窗口函数程序代码形式上是一个巨大的switch 语句,用以处理由消息循环发送到该窗口的消息,窗口函数由Windows 采用消息驱动的形式直接调用,而不是由应用程序显示调用的,窗口函数处理完消息后又将控制权返回给Windows。

  系统消息队列、应用程序队列、消息循环和窗口函数之间的关系如图1所示。

上一篇: 在C++ Builder中用Ole控制Excel表
下一篇: 利用C++ Builder 设计实现文件切割机

1 2 下一页

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net