Delphi中的Windows API编程初步

Delphi中的Windows API编程初步

ID:42603448

大小:50.30 KB

页数:15页

时间:2019-09-18

Delphi中的Windows API编程初步_第1页
Delphi中的Windows API编程初步_第2页
Delphi中的Windows API编程初步_第3页
Delphi中的Windows API编程初步_第4页
Delphi中的Windows API编程初步_第5页
资源描述:

《Delphi中的Windows API编程初步》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Delphi中的WindowsAPI编程初步  使用RAD类型工具的人越来越多了,虽然我对于RAD类的工具向来不多作评议,但我还是常常使用的。所以我深深的知道这类工具虽然给我们带来了便利,使我们能不用将更多的精力放在界面上,但同时也将初学者紧紧的圈在了他所提供的控件和组件中。所以很多人并不能真正的了解windows的消息驱动原理以及windows的运作过程。本文中我们就一起来学习一下windows的运作过程,使我们对delphi这样一个优秀的编程工具有一个新的认识,并对windows下的程序编写有更深刻

2、、透辟的了解和认识。  一、消息的定义  我们先从使用的角度看看windows的运作过程。我们都知道windows是一个多任务的平台,使用这个平台,我们可以一边工作,一边听歌曲,等等。所以对于这个操作平台可以想象到它除了一般操作系统所提供的对文件系统,内存系统等的管理之外,更重要的就是我们所熟知的消息驱动了,也就是说,要通过一定的方法和结构可以给每一个运行中的程序实例以及其中的每一个窗口传递其中所触发的事件。Windows中究竟是怎样做到的呢?让我们打开安装delphi的目录,在其中的sourcert

3、lWinWindows.pas文件(或者在一个工程文件,找到uses,在其中找到Windows,然后按下Ctrl键,用鼠标点击单词),在其中的第18919行,我们可以看到这样一个结构的定义:{Messagestructure}PMsg=^TMsg;tagMSG=packedrecordhwnd:HWND;message:UINT;wParam:WPARAM;lParam:LPARAM;time:DWORD;pt:TPoint;end;{$EXTERNALSYMtagMSG}TMsg=tagMSG;M

4、SG=tagMSG;{$EXTERNALSYMMSG}  其中hwnd字段表示触发了消息的窗口的ID,由此可以保证消息正确的发送到每一个窗口去。Message表示消息的类型,其中更细致的解释要通过wParam和lParam一起来进行,不同的消息,wParam和lParam的值也就不相同。time用来记录消息触发的时间。Pt则表示触发的位置(毕竟window中有了鼠标)。我们也可以用同样的方法打开Messages文件。其中定义了windows中的绝大部分消息和结构。下面是我们截取的其中一部分。const 

5、{$EXTERNALSYMWM_NULL}  WM_NULL=$0000; {$EXTERNALSYMWM_CREATE}  WM_CREATE=$0001; {$EXTERNALSYMWM_DESTROY}  WM_DESTROY=$0002; {$EXTERNALSYMWM_MOVE}  WM_MOVE=$0003; {$EXTERNALSYMWM_SIZE}  WM_SIZE=$0005;  …………  WM_APP=$8000; {NOTE:AllMessageNumbersbelow0x040

6、0areRESERVED} {PrivateWindowMessagesStartHere} {$EXTERNALSYMWM_USER}  WM_USER=$0400;  …………  {Dialogmessages} {$EXTERNALSYMDM_GETDEFID}  DM_GETDEFID=(WM_USER+0); {$EXTERNALSYMDM_SETDEFID}  DM_SETDEFID=(WM_USER+1); {$EXTERNALSYMDM_REPOSITION}  DM_REPOSITIO

7、N=(WM_USER+2); {$EXTERNALSYMPSM_PAGEINFO}  PSM_PAGEINFO=(WM_USER+100); {$EXTERNALSYMPSM_SHEETINFO}  PSM_SHEETINFO=(WM_USER+101); {ButtonNotificationCodes}  …………  可以看到,windows中每一个消息都对应着一个唯一的数值。当然我们也可以定义自己的消息,它的数值只要定义在WM_USER之后,保证和其中的定义不想重复即可。  二、消息的接收  消息

8、到是有了,但怎样才能让程序以及窗口接收到呢?还是从使用的角度考虑,可以想象到,对于一个程序或窗口可以接收到来自鼠标、键盘等输入设备的消息,也可以接收到来自程序传递的消息,因为有了前面的tagMSG结构,我们就可以被动的在程序中接收消息了。这个功能的实现就是由下面的程序实现的(同样的这段程序来自于delphi的元代码):functionTapplication.ProcessMessage(varMsg:TMsg):Boolean;var H

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。