TrackMouseEvent用法
来源:互联网 发布:中世纪2原版优化9使用 编辑:程序博客网 时间:2024/05/17 04:31
如何响应鼠标离开某个窗体(控件)事件?
OnMuseMove:这个函数时MFC内部已经做好了的事件:主要响应鼠标移动事件.但是这个事件有一个严重的问题:它只能识别鼠标是否在其上移动.
OnMouseMove需要加上的代码段如下:
if ( m_bOver == FALSE )
{
m_bOver = TRUE;
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof( TRACKMOUSEEVENT );
tme.dwFlags = TME_LEAVE;
tme.hwndTrack = m_hWnd;
tme.dwHoverTime = 0;
::TrackMouseEvent( &tme );
}
此时当鼠标移入的时候,m_bOver为TRUE.
我们在到OnMouseLeave函数里面把m_bOver设回FLASE.
TrackMouseEvent函数的几点说明:
此函数能寄送如下消息:
WM_MOUSEHOVER:在上次调用TrackMouseEvent指定的时间里,鼠标盘旋在窗口的客户区。当此消息产生时,盘旋跟踪停止。如果需要进一步的鼠标盘旋跟踪,应用程序应当再次调用TrackMouseEvent。
WM_MOUSELEAVE:鼠标离开上次调用TrackMouseEvent时指定的窗口客户区。当此消息产生时,所有由TrackMouseEvent要求的跟踪都被取消。当鼠标再次进入窗口,并且要求进一步的鼠标盘旋跟踪时,应用程序必须调用TrackMouseEvent。
该处使用自定义消息发送形式:
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave) ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)才能使用
注意:WM_MOUSELEAVE响应函数为
void OnMouseLeave(WPARAM wp,LPARAM lp),有些地方说,若写成 void OnMouseLeave(),Release下运行会出现错误.
备注:当鼠标指针在指定时间内停留在指定矩形内,就被认为是处于盘旋状态。调用函数 SystemParameterslnfo并使用SPI_GETMOUSEAOVERWIDTH,SPI_GETMOUSEHOVERAEIGHT和 SFI_GETMOOSEAOVERTIME值来取得矩形的大小和时间。
typedef struct tagTRACKMOUSEEVENT {
DWORD cbSize; //TRACKMOUSEEVENT结构的大小
DWORD dwFlags;//定义服务请求
HWND hwndTrack; //待跟踪窗口的句柄
DWORD dwHoverTime;//定义hover事件耗尽时间
} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
结构详解:
● dwFlags:取值如下:TME_CANCEL取消前一次的跟踪请求;使用该项时必须指定要取消跟踪的类型.(如果想要取消hover跟踪,则应传入TME_CANCEL和TME_HOVER.可以发送WM_MOUSEHOVER消息,如果在hover跟踪处于激活状态时再次请求hover跟踪的话,hover的定时器将被重置.
TME_LEAVE鼠标离开.发送TME_MOUSELEAVE消息.当鼠标不在指定的窗口或者区域上时,将立即产生一个leave通知,不在做任何跟踪
TME_QUERY这一项不是作为跟踪请求的.选中这一项时,当结构体被传送给TrackMouseEvent函数时,即产生当前跟踪.唯一不同的是返回的消耗时间,是真实的消耗时间,而不是HOVER_DEFAULT,即使之前TrackMouseEvent函数锁请求的是HOVER_DEFAULT.
● dwHoverTime:单位为毫秒.可以使用HOVER_DEFAULT来使用系统默认的hover事件耗尽时间.
默认是菜单下拉时间,即400毫秒.可以调用SystemParameterInfo函数并使用SPI_GETMOUSEHOVERTIME来获取系统默认的hover耗尽时间.默认的hover矩形区与双击区一致.也可以使用SPI_GETMOUSEHOVERWIDTH(HEIGHT)来获取鼠标在上面停留可以产生的区域.
TrackMouseEvent函数的头文件是winuser.h,对应的库文件为user32.lib,
_TrackMouseEvent函数则在commctrl.h里定义,而由COMCTRL32.DLL导出。
- TrackMouseEvent用法
- 关于TrackMouseEvent用法总结
- TrackMouseEvent
- TrackMouseEvent &
- TrackMouseEvent函数
- TrackMouseEvent函数
- TrackMouseEvent介绍
- TrackMouseEvent函数
- 关于API函数TrackMouseEvent
- 使用TrackMouseEvent跟踪鼠标
- TrackMouseEvent与_TrackMouseEvent
- 关于TrackMouseEvent函数
- TrackMouseEvent与_TrackMouseEvent
- TrackMouseEvent与_TrackMouseEvent
- TrackMouseEvent与_TrackMouseEvent
- TrackMouseEvent函数(鼠标离开某窗口)
- TrackMouseEvent函数实现鼠标停留响应
- Windows API 每日一练之 TrackMouseEvent
- 苹果9L0-403测试对于被选入苹果认证支持专家(ACSP)10.6名称
- ADB常用的几个命令
- com.android.internal.R的位置
- poj1915 Knight Moves
- 花岗岩骨料生产线
- TrackMouseEvent用法
- nina 字节数组
- I have no idea
- 错过的按时间段
- java实现冒泡排序
- acm-简单枚举-除法(水题)
- Android性能调优
- 关于win7编码与Ubuntu的区别。
- 解读新“拍拍”:搞臭C2C 抱淘宝一起死