const 
MSG_ID = 50000; 
procedure WMMSG(var MSG: TMessage); message MSG_ID; 出错--=》》Illegal message method index 非法的消息方法指针 
如果改为MSG_ID=40000;不出错了。是不是消息ID有限制????

解决方案 »

  1.   

    注意,自定义的消息必须从WM_APP(16进制的8000)开始,好像到C000为止。
    你定义的ID=50000,16进制就是C350,超出范围了。一般定义为WM_APP加一个
    数字就可以了,比如 WM_APP+1 等。
      

  2.   

    那我为什么用RegisterWindowMessage()注册消息后,得到的值大于C000?
      

  3.   

    用RegisterWindowMessage得到的消息,已经不是自定义的消息了,这个函数
    返回的值始终位于C000 - FFFF 之间。Windows 将消息分成了几个区域,每个
    区域适用于不同的场合。最早的Windows的系统消息,位于 0 - 3FF,后来到
    Windows95之后,系统的系统扩充到 0 - 7FFF,8000-BFFF为用户自定义消息,
    C000 - FFFF 为 RegisterWindowMessage 注册的消息。
      

  4.   

    你就直接定义消息ID就可以了,不要用RegisterWindowMessage。ID的大小在
    WM_APP 到 WM_APP+$3FFF 之间就可以了。