Delpih 中的Windows API编程初步
日期:2007年8月28日 作者: 查看:[大字体 中字体 小字体]-
使用RAD类型工具的人越来越多了,虽然我对于RAD类的工具向来不多作评议,但我还是常常使用的。所以我深深的知道这类工具虽然给我们带来了便利,使我们能不用将更多的精力放在界面上,但同时也将初学者紧紧的圈在了他所提供的控件和组件中。所以很多人并不能真正的了解windows的消息驱动原理以及windows的运作过程。本文中我们就一起来学习一下windows的运作过程,使我们对delphi这样一个优秀的编程工具有一个新的认识,并对windows下的程序编写有更深刻、透辟的了解和认识。
一、消息的定义
我们先从使用的角度看看windows的运作过程。我们都知道windows是一个多任务的平台,使用这个平台,我们可以一边工作,一边听歌曲,等等。所以对于这个操作平台可以想象到它除了一般操作系统所提供的对文件系统,内存系统等的管理之外,更重要的就是我们所熟知的消息驱动了,也就是说,要通过一定的方法和结构可以给每一个运行中的程序实例以及其中的每一个窗口传递其中所触发的事件。 Windows中究竟是怎样做到的呢?让我们打开安装delphi的目录,在其中的source\rtl\Win\Windows.pas文件(或者在一个工程文件,找到uses,在其中找到Windows,然后按下Ctrl键,用鼠标点击单词),在其中的第18919行,我们可以看到这样一个结构的定义:
{ Message structure }
PMsg = ^TMsg ;
tagMSG = packed record
hwnd : HWND ;
message : UINT ;
wParam : WPARAM ;
lParam : LPARAM ;
time : DWORD ;
pt : TPoint ;
end ;
{ $ EXTERNALSYM tagMSG }
TMsg = tagMSG ;
MSG = tagMSG ;
{ $ EXTERNALSYM MSG }
其中hwnd字段表示触发了消息的窗口的ID,由此可以保证消息正确的发送到每一个窗口去。 Message 表示消息的类型,其中更细致的解释要通过wParam和lParam一起来进行,不同的消息,wParam和lParam的值也就不相同。time用来记录消息触发的时间。Pt则表示触发的位置(毕竟window中有了鼠标)。我们也可以用同样的方法打开Messages文件。其中定义了windows中的绝大部分消息和结构。下面是我们截取的其中一部分。
const
{ $ EXTERNALSYM WM_NULL }
WM_NULL = $0000 ;
{ $ EXTERNALSYM WM_CREATE }
WM_CREATE = $0001 ;
{ $ EXTERNALSYM WM_DESTROY }
WM_DESTROY = $0002 ;
{ $ EXTERNALSYM WM_MOVE }
WM_MOVE = $0003 ;
{ $ EXTERNALSYM WM_SIZE }
WM_SIZE = $0005 ;
…… ……
WM_APP = $8000 ;
{ NOTE : All Message Numbers below 0x0400 are RESERVED }
{ Private Window Messages Start Here }
{ $ EXTERNALSYM WM_USER }
WM_USER = $0400 ;
…… ……
{ Dialog messages }
{ $ EXTERNALSYM DM_GETDEFID }
DM_GETDEFID = ( WM_USER+0 ) ;
{ $ EXTERNALSYM DM_SETDEFID }
DM_SETDEFID = ( WM_USER+1 ) ;
{ $ EXTERNALSYM DM_REPOSITION } - [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
-
- Delpih 中的Windows API编程初步 相关文章:
- ·Web2.0在中国步入歧途 缺赢利模式VC有错
- ·C #中的几个线程同步对象方法
- ·简单七步最大限度优化你的博客文章
- ·江民教你五步远离“机器狗”病毒侵扰
- ·加强边界路由器安全防护的几个步骤
- ·教你两步彻底根除系统多余输入法
- ·改进SQL Server数据库系统安全五步走
- ·Photoshop调色 五步搞定军色效果
- ·ASP.NET AJAX中的异步Web Services调用
- ·Office文档打印成为TIFF图形文件的步骤
- Delpih 中的Windows API编程初步 相关软件
- ·忧郁狐步
- ·《月球漫步》模拟器
- ·《独步武林》
- ·独步天下
- ·NDS《简单DS系列Vol.21 步兵》模拟器
- ·《交易》— 步入权利与欲望的死亡陷阱
- ·《文学散步》
- ·全年龄段言情主义大作《步步惊心》实体书版(全本)
- ·《步非烟作品全集》
- ·与孙子兵法同步思考
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:用TCP/IP做文件续传
精品推荐
热点TOP10
- ·Delphi下的ADO使用方法!
- ·在Delphi中实现数据分析模块的动态报表
- ·在Delphi中控制扫描仪
- ·用拼音首字符来实现检索功能
- ·让Delphi的DBGrid支持鼠标轮
- ·自 动 隐 藏 的 声 象 按 钮
- ·OpenGL简介
- ·用Delphi制作动态有声标签
- ·从 实 例 看 Delphi 4 中 的 动 态
- ·Delphi中为DBGrid控件添加色彩
- ·常用的BCB & Delphi 函数
- ·产生不重复随机数的简便算法
- ·陈经韬2002原创资料
- ·Delphi2005试用版安装指南
- ·Delphi中ListBox控件的六种特效
- ·第三方控件使用方法
- ·关于SMTP和POP3使用及关于客户-服务端的自动连线问题
- ·关于MP3中的ID3V2格式探讨及我写的ID3V2读取源码
- ·监视打印机部分线程内容
- ·获取其他进程中ListView的文本
