procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;procedure CMMouseEnter(var msg:TMessage);前面这个是很容易理解,但是加上这个 message CM_MOUSEENTER;
是什么意思呢?自定义函数能这样写吗?有什么好处?

解决方案 »

  1.   

    能,这是写消息触发函数的必要格式,message是关键字,CM_MOUSEENTER是消息类型(也可自定义),而函数名一般的命名规则是消息类型去掉下划线,然后首字母大写,就像你上面的例子一样,然后你Send这个消息,系统会自动调用该消息的处理函数(也就是该函数的实现部分的代码)
      

  2.   

    procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;结构很明显:后面的message CM_MOUSEENTER;是标记,表消息;
                前面的procedure CMMouseEnter(var msg:TMessage); 表处理过程,名称可自己定义。
      系统收到后面的消息后就调用你自己定义的这个过程!简单吧。
      

  3.   

    消息CM_MOUSEENTER和CM_MOUSELEAVE的处理过程,也就是当系统发出这两个消息时,你可以通这两个函数来完成,当鼠标移进或移出一个对象(TControl对象)一些事情。相当于VCL中的事件。