CM_MOUSEENTER 和 CM_MOUSELEAVE 消息分析
来源:互联网 发布:淘宝网汽车坐垫 编辑:程序博客网 时间:2024/04/29 10:00
在TControl 类中有自定义的消息
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
在我们写控件的时候,可以显示鼠标进入或移除控件的特效
但是CM_MOUSEENTER 和CM_MOUSELEAVE消息是什么时候产生的呢
在Tapplication类中
function TApplication.DoMouseIdle: TControl;
var
CaptureControl: TControl;
P: TPoint;
begin
GetCursorPos(P);
Result := FindDragTarget(P, True);
CaptureControl := GetCaptureControl;
if FMouseControl <> Result then
begin
if ((FMouseControl <> nil) and (CaptureControl = nil)) or
((CaptureControl <> nil) and (FMouseControl = CaptureControl)) then
FMouseControl.Perform(CM_MOUSELEAVE, 0, 0);
FMouseControl := Result;
if ((FMouseControl <> nil) and (CaptureControl = nil)) or
((CaptureControl <> nil) and (FMouseControl = CaptureControl)) then
FMouseControl.Perform(CM_MOUSEENTER, 0, 0);
end;
end;
获取鼠标的位置,判断鼠标所在那个控件的范围呢,如果控件改变了,就对这个控件发送
CM_MOUSEENTER,对旧的控件发送CM_MOUSELEAVE。
procedure TApplication.Idle(const Msg: TMsg);
var
Control: TControl;
Done: Boolean;
begin
Control := DoMouseIdle;
DoMouseIdle 是在 Idle函数中调用
继续追踪
procedure TApplication.HandleMessage;
var
Msg: TMsg;
begin
if not ProcessMessage(Msg) then Idle(Msg);
end;
这下真相大白了
在没有消息处理的时候,就调用Idle函数,
- CM_MOUSEENTER 和 CM_MOUSELEAVE 消息分析
- BCB动态库和OCX里面CM_MOUSELEAVE和CM_MOUSEENTER消息的实现
- Webservice_11_soap消息的分析和消息的创建
- MFC消息循环和消息泵的分析
- 使用 JavaScript 创建和分析 JSON 消息
- Android源码分析-消息队列和Looper
- Android源码分析-消息队列和Looper
- Android源码分析-消息队列和Looper
- 虚拟键码和windows消息分析
- Android源码分析-消息队列和Looper
- 深度分析WM_PAINT和WM_ERASEBKGND消息
- Android源码分析-消息队列和Looper
- Android源码分析-消息队列和Looper
- Android源码分析-消息队列和Looper
- Webservice05---SOAP消息的分析和创建
- soap消息分析和soap消息的传递和处理(一)
- MVVMLight源码分析之消息机制和ViewModelBase
- 手机系统消息通知设计的整理和分析
- Oracle连接/建立/修改等
- Linux常用命令汇总(持续更新中)
- Chapter 11: Using Menu-Based Controls--Menu-based control events
- jQuery DateTimePicker 时间日期控件
- 常用正则表达式
- CM_MOUSEENTER 和 CM_MOUSELEAVE 消息分析
- 高质量的快速的图像缩放 之 近邻取样插值和其速度优化
- 限购令与包子
- ︰【】奥立诚生物科技 奥立诚生物科技研发的华龙6号蜈蚣 成养殖行业的亮点
- 上海麻辣马资深程序员叶劲峰:我的游戏人生
- 策略(Strategy)模式 (二)
- hdu 1856 More is better
- DLL编写教程
- Android UI事件处理