Delphi的消息处理[1]

 我来答
白露饮尘霜17
2022-09-28 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6677
采纳率:100%
帮助的人:36.2万
展开全部

  Delphi是Borland公司的一种面向对象的可视化软件开发工具

  Delphi集中了Visual C + +和Visual Basic两者的优点 容易上手 功能强大 特别是在界面设计 数据库编程 网络编程方面更有其独特的优势 Delphi中的消息

  消息是Windows发出的一个通知 它告诉应用程序某个事件发生了 在Delphi中 大多数情况下Windows的消息被封装在VCL的事件中 我们只需处理相应的VCL事件就可以了 但如果我们需要编写自己的控件 截获或过滤消息就必须深入研究Win 的消息处理机制

  在Delphi中消息以TMessage记录的方式定义 打开Message pas文件 我们可以看到Tmessage是这样定义的

  type

    TMessage = packed record

      Msg: Cardinal;

      case Integer of          : (WParam: Longint;            LParam: Longint;

          Result: Longint);

        : (WParamLo: Word;

          WParamHi: Word;

          LParamLo: Word;

          LParamHi: Word;

          ResultLo: Word;

          ResultHi: Word);

    end;

  其中 Msg是区别于其他消息的常量值 这些常量值可以是Windows单元中预定义的常量 也可以是用户自己定义的常量 Wparam通常是一个与消息有关的常量值 也可以是窗口或控件的句柄 LParam通常是一个指向内存中数据的指针

  Result是消息处理的返回值 Wparam Lparam和Result都是 位的 如果想访问其中的低 位或高 位可以分别使用WparamLo WparamHi LParamLo LparamHi ResultLo和ResultHi

  在Delphi中除了通用的Tmessage外 还为每个Windows定义了一个特殊的消息记录 我们可以浏览Message pas文件 下面是键盘的消息记录

  MKey = packed record

    Msg: Cardinal;

    CharCode: Word;

    Unused: Word;

    KeyData: Longint;

    Result: Longint;

    与键盘相关的消息如 WM_KEYDOWN WM_KEYUP WM_CHAR WM_SYSKEYDOWN WM_SYSKEYUP WM_SYSCHAR的记录也被定义为Mkey 在Message pas文件中有以下声明

    MChar = Mkey MKeyDown =

    Mkey MKeyUp = Mkey MSys

    KeyDown = Mkey; MSysKeyUp =

    Mkey MSysChar = Mkey

lishixinzhi/Article/program/Delphi/201311/24883

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式