看了几天关于消息的资料,但是一直对自定义消息搞不明白
为什么要自定义消息呢?我没有发送自定义的消息为什么可以用一个过程
procedure MyMessage(var message:TMyMessage);message:WM_MYMESSAGE;
来接收和处理消息呢?
关键是我没有发送这个消息啊?
有哪位朋友能够详细的给我讲解下自定义消息吗?
如果有源代码的话那太感谢了
谢谢

解决方案 »

  1.   

    贴点资料 ^_^
    ---------------------------------------------
    一、WINDOWS的消息(Windows Messages)
        操作系统将输入信息以消息的形式传送给窗口过程(WINDOW PROCEDURE)。(操作)系统和应用程序均可以产生消息。每当有输入产生的时候,例如:用户敲击键盘、移动鼠标或者是点击SCROLL BAR的时候,操作系统都将产生输入的事件(EVENT),操作系统也将应用程序造成的系统的改变产生消息,例如:当应用程序改变系统字体或者RESIZE它自己所属的窗口。而应用程序可以通过产生消息指引自己的窗口去完成指定定的任务或者和其它应用程序的WINDOW通讯。
        操作系统发送消息的时候用到四个参数:WINDOW句柄(window handle),消息标识(message identifier),和两个消息参数(message parameter)。
    WINDOW句柄----指定了消息要发送到那个窗口。
        消息标识-----一个预定义的常量,用于决定如何处理消息。
        消息参数(两个)-----它们的含义又上面的两个参数的内容决定,不同的窗口和消息标识对这两个参数有不同的解释,例如:是指定的数据或者是数据指针等等。二、消息的类型(message type)
    1、系统定义的消息
        每个系统消息都有一个唯一的消息ID和指定消息的作用的标识的常量(字符标识,在SDK的头文件中定义)。例如:WM_PAINT常量要求窗口画它的内容。
    标识常量的的前缀指明了那种类型的窗口可以解释和处理该消息。
    2、应用程序定义的消息
        接收到应用程序自定义的消息的窗口必须能够解释应用程序的自定义消息,并且能够处理它。
        消息标识(message identifier)的值必须符合以下的条件:
    1)、0x0000---0x03FF被系统保留。
    2)、0x0400---0x7FFF可应用于私有的WINDOW CLASS。
    3)、如果你的应用程序的版本是4.0,你可以使用0x8000---0xBFFF(WM_APP)为私有的消息。
    4)、当应用程序使用RegisterWindowMessage函数登记一个消息的时候,操作系统返回的位于0xC000到0xFFFF之间的消息标识。这样的消息标识可以保证是系统唯一的消息标识 。
      

  2.   

    没有定义还能接收不报错才怪windows中的事件都是消息自己定义消息。很多好处。。比如你只用一个Timer,在OnTimer中广播一个到时的消息。其他的窗体也可以处理这个事件了。