Windows经典样式 (Classic Style)下不能自动接收WM_NCMOUSELEAVE的问题

Windows 经典样式 (Classic Style) 下不能自动接收

WM_NCMOUSELEAVE 的问题

作者: cywater2000

日期: 2009-8-1

来自: http://blog.csdn.net/cywater2000

 

前段时间同事解决了一个项目遗留问题,在其他机器上测试没什么问题,但在我的机器上总是有问题。后来仔细研究发现,他使用了 WM_NCMOUSELEAVE 消息,此消息在窗口为 XP 样式 (Windows XP Style) 下是自动接收的。而我喜欢的简约风格窗口“ Windows 经典样式”就出问题了:接收不到,或者消息没有转发。

Google 了一下,在 CSDN / MSDN 也查了一下,发现必须要使用 TrackMouseEvent 这个函数才能获得 WM_NCMOUSELEAVE 消息。 Ft! 从来没想过窗口风格不一样会导致代码执行不一样

 

简单说明一下:

http://msdn.microsoft.com/en-us/library/ms645626(VS.85).aspx

WM_NCMOUSELEAVE 消息当光标离开窗口非客户区时触发, MSDN 上说之前要调用 TrackMouseEvent 才可以。实际上 XP 风格下不需要显示调用。

 

http://msdn.microsoft.com/en-us/library/ms646265(VS.85).aspx

TrackMouseEvent 函数是用来传递当鼠标指针离开 (LEAVE) 窗口或者在指定时间悬停 (HOVER) 窗口的消息。可以有客户区和非客户区的区分。注意这个函数不是一劳永逸的,需要多次调用。

 

一个简单的应用:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值