以CM_开头的控件消息是在哪里发出来的啊?(50分)

  • 主题发起人 诸葛白痴
  • 开始时间

诸葛白痴

Unregistered / Unconfirmed
GUEST, unregistred user!
看过一个富翁说CM_开头的消息也是由瘟斗死的消息转换过来的,比如CM_MouseLeave是由
什么WM_N...经过计算转换过来的,可是我查找了TSpeedButton的各级代码也没发现在哪
里有PostMessage或SendMessage啊,并且在TControl里已经用到CM_MouseLeave了,证明
这个消息在上一层TComponent已以发出了,可我没是没找到啊
 
CM_是控件的系统消息,说说你要干什么吧
 

{*******************************************************}
{ }
{ Borland Delphi Visual Component Library }
{ }
{ Copyright (c) 1995-2001 Borland Software Corporation }
{ }
{*******************************************************}

unit Controls;

{ VCL control message IDs }

const
CM_BASE = $B000;
CM_ACTIVATE = CM_BASE + 0;
CM_DEACTIVATE = CM_BASE + 1;
CM_GOTFOCUS = CM_BASE + 2;
CM_LOSTFOCUS = CM_BASE + 3;
CM_CANCELMODE = CM_BASE + 4;
CM_DIALOGKEY = CM_BASE + 5;
CM_DIALOGCHAR = CM_BASE + 6;
CM_FOCUSCHANGED = CM_BASE + 7;
CM_PARENTFONTCHANGED = CM_BASE + 8;
 
以CM_开头的控件消息是由TApplication发出的,在Forms单元里。
CM_消息的确是由一些WM_消息转换过来的,但不是简单的转换啦,是行为的定义。
像CM_MouseLeave,实际上是先Capture鼠标,只有当检测到鼠标移出控件外时才发出。
因为Capture鼠标后,即使鼠标移出控件外,控件仍然得收到鼠标消息。
不知这样说了你明白了没
 
接受答案了.
 
顶部