每一个事件对应一条,或多条消息例如:ONBUTTONCLICK();对应WM_LEFTBUTTONCLICK
而COMBOBOX的ONCHANGE对应CB_EDITCHANGE和CB_SELECTCHANGE

解决方案 »

  1.   

    在Windows中,每个窗口都有相应的窗口过程,用于处理窗口的消息。在Delphi中,每个TWinControl派生类(可以认为控件吧)都定义了一个mainWndProc,Windows调用他来处理执行消息处理。而MainWndProc对象方法会调用WndProc方法。这个WndProc方法可以重载,来自己处理消息。然后WndProc对象方法把消息逐步转换为事件。总归一句话,delphi的VCL把消息转变为事件,事件其实就是封装过的消息。例如:
       TWinCotrol类相应WMKeyDown消息。这个消息处理函数调用内部的DoKeyDown对象方法(处理一些特殊情况),DoKeyDown方法有调用虚拟的keyDown对象方法。最后KeyDown对象方法调用了OnKeyDown事件处理程序(keyDown事件应该较熟悉了吧)。这就是VCL如何把一个Windows消息转换为Delphi事件。
      

  2.   

    消息是从windows处理的,事件是一个函数句柄。
      

  3.   

    消息是windows可执行程序运行机制的组成部分,所有的windows可执行程序在运行时都是靠消息来驱动的。消息不可少。
    事件是针对某个对象构件而言的。它是为了配合可视化编程的需要而发展起来的。它提供了在某个适当时刻执行编程者的相应代码的机会。
    在某个适当时刻执行编程者的相应代码这个方面来说,消息和事件是类似的。
      

  4.   

    消息:你说的消息指的是在Windows系统中的含义吧!在Windows系统中采用的是事件驱动的方式,就是进程“静态”的等待Windows的消息,通过响应消息实现与用户或者是外部设备的交互操作。Windows为每一个进程维护一个消息队列,当Windows获得外部设备的中断时,比如用户按下了一个键,他会将这个“中断”翻译成合适的消息,他也有能力知道这个消息发给哪个进程,他将消息置于目标进程的消息队列中。而目标进程也并非是真正的静止的,目标进程在空闲时会不断的查询消息队列,看看有没有消息存在,发现存在消息后转入处理过程。
    事件:一般指的是在程序语言中的概念。在Delphi中,Delphi所编译的程序会正确翻译消息,并形成事件,Delphi实现事件的方式是调用元件的事件句柄,如果句柄不存在也就是为nil时,不会形成事件。
      

  5.   

    有一本《WINDOWS程序设计入门》的书,人民邮电出版社的,上面有很多关于WINDOWS的消息,设备驱动,画图等基本概念,很不错!能增强你的理解!