消息我想不用再解释了吧?!
事件本质上是一个指向一个过程的调用地址的指针
当程序收到一条消息,它尝试把该条消息解释为一个事件,如果该定义了该事件的处理过程,就调用该过程,例如:当你编写了一个事件处理过程,在该窗体的dfm文件里你会找到象下面的这一行:OnMouseDown = Button1MouseDown这一行就是把你写事件处理过程的地址赋值给该Button控件的OnMouseDown属性,该属性实际把值赋给一个私有变量.在该Button的声明中会有类似如下的代码:Property OnMouseDown: TOnMouseDownEvent read FOnMouseDown write FOnMouseDown;消息处理过程中会有类似如下的代码:case Message of
...
WM_LBUTTONDOWN:
if Assigned(FOnMouseDown) then
  FOnMouseDown(Self);
...
end;

解决方案 »

  1.   

    事件不一定要有消息来源(尽管感觉上象在处理消息),如每个窗体都可以写一个OnCreate事件,但它并不是响应了WM_CRERTE消息,而是VCL在创建完了窗体后就尝试调用该事件处理过程(如果存在)。
      

  2.   

    如果一个事件和一个消息联系起来后,请问用什么代码把这个消息和事件联系起来呢?
    如WM_LBUTTONDOWN消息和事件onchick通过什么代码或函数联系起来的呢?
      

  3.   

    就是上面提到的“消息处理过程”啊!每个窗口控件(如TForm,TButton,TEDit等)都有一个这样的过程的,VCL库已经帮你写好了。详细的代码你得查查VCL源码了。当然,如果有必要,你可以重写该过程,根据情况自己决定该过程要干些什么。
      

  4.   

    case Message of
    ...
    WM_LBUTTONDOWN:
      onchick(self);
    ...
    end;
      

  5.   

    movingboy(movingboy) 
    还有个问题:
    有个什么消息结构的!这个消息结构是否一定是固定长度呢?
      

  6.   

    movingboy(movingboy) 
    还有一个消息处理过程:
    procedure(var msg:TMemmage);Message WM_...;
    这个东西和事件处理过程是什么关系呢?另:很高兴和你认识,以后我有什么问题能发电子邮件请教你吗?
      

  7.   

    消息结构是指windows发送一条消息时包含的附加的信息,典型的结构如下:
    typedef struct tagMSG {
        HWND   hwnd; 
        UINT   message; 
        WPARAM wParam; 
        LPARAM lParam; 
        DWORD  time; 
        POINT  pt; 
    } MSG, *PMSG; 
    VCL中定义了许多自己的消息结构,如TWMKey,TWMMouse等,有兴趣可以看messages.pas的源码。语句procedure(var msg:TMemmage);Message WM_...;的意思就是告诉VCL,有WM_...消息过来,就让我处理一下。你随便在VCL中找一个类似上面的过程的源码看看,在过程中多半会有一行inherited。实际上这种过程就是省略了override关键字的覆盖过程。具体的解释可以在Delphi的帮助中查message (directive)关键字。我的电子邮件地址是[email protected](你是第一个问我要地址的人)。我能否有足够的水平和时间回答你的问题就很难说了,一起学习吧!