一个窗体可以接收多个消息么:
  看到有些例子上定义接收信息的窗体内Procedure Onmessage(var m:Tmessage);message WM_USER+500;如果这个窗体再接收另外的消息该怎么定义?  

解决方案 »

  1.   

    message WM_USER+500  
    你可以自己定义后面的message的ID,就像WM_USER+500,你也可以定义WM_USER+501
      

  2.   

    Procedure Onmessage1(var m:Tmessage);message WM_USER+500;
    Procedure Onmessage2(var m:Tmessage);message WM_USER+501;
    ...
    Procedure Onmessagex(var m:Tmessage);message WM_USER+50x;
    可以定义很多的
      

  3.   

    随便你怎么定义,只要大于WM_USER就行。
      

  4.   

    消息是Windows发出的一个通知,它告诉应用程序某个事件发生了。在Delphi中,大多数情况下Windows的消息被封装在VCL的事件中,我们只需处理相应的VCL事件就可以了,但如果我们需要编写自己的控件、截获或过滤消息就必须深入研究Win32的消息处理机制。 在Delphi中消息以TMessage记录的方式定义。打开Message.pas文件,我们可以看到Tmessage中消息的定义;
      前面我们提到的消息都是标准的Windows消息(WM_X),除此之外还有VCL内部消息、通知消息和用户自定义消息。 
    给自己发送消息和编写消息处理过程。消息的常量值为WM_USER+100到FFF, 这个范围是Windows为用户自定义消息保留的。
      Delphi消息的发送有三种方法: 
        1.Tcontrol类的Perform对象方法。可以向任何一个窗体或控件发送消息,只需要知道窗体或控件的实例。其声明如下: function Tcontrol.Perform(Msg:Cardinal;Wparam,Lparam:Longint):Longint 
        2.Windows的API函数SendMessage()和Postmessage()。其声明如下: 
         function SendMessage(hWnd: HWND; Msg: UINT;wParam:WPARAM; lParam: LPARAM):LRESULT;stdcall; 
         function PostMessage(hWnd: HWND; Msg: UINT;wParam: WPARAM; lParam:LPARAM):LRESULT;stdcall