`

_TrackMouseEvent

    博客分类:
  • VC
阅读更多

_TrackMouseEvent

默认情况下,窗口是不响应 WM_MOUSELEAVE  WM_MOUSEHOVER 消息的,所以要使用 _TrackMouseEvent函数来激活这两个消息。调用这个函数后,当鼠标在指定窗口上停留超过一定时间或离开窗口后,该函数会 Post 这两个消息到指定窗口。 

使用方法: 

1.
 在对话框类中定义一个变量来标识是否追踪当前鼠标状态,之所以要这样定义是要避免鼠标已经在窗体之上时,一移动鼠标就不断重复产生 WM_MOUSEHOVER  
BOOL _bMouseTrack=TRUE ;

2.
  OnMouseMove 中调用 _TrackMouseEvent 函数 
 if (_bMouseTrack)     // 
若允许 追踪,则。 
 {
  TRACKMOUSEEVENT csTME;
  csTME.cbSize = sizeof (csTME);
  csTME.dwFlags = TME_LEAVE|TME_HOVER;
  csTME.hwndTrack = m_hWnd ;// 
指定要 追踪 的窗口 
  csTME.dwHoverTime = 10;  // 
鼠标在按钮上停留超过 10ms ,才认为状态为 HOVER
  ::_TrackMouseEvent (&csTME); // 开启 Windows  WM_MOUSELEAVE  WM_MOUSEHOVER 事件支持 
  _bMouseTrack=FALSE ;   // 若已经 追踪 ,则停止 追踪 
 }

3.
  OnMouseLeave 中再次允许追踪鼠标状态 
_bMouseTrack=TRUE ;

4.
 备注:这两个消息的映射要自己写 
 ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)
 ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)

分享到:
评论

相关推荐

    _TrackMouseEvent 与 WIN32 ToolTip 源码

    《_TrackMouseEvent 与 WIN32 ToolTip 》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/9796229,转载请标明出处哦;

    A simple drop-in class that provides a ‘hot’ look button u

    A simple drop-in class that provides a ‘hot’ look button using the _TrackMouseEvent function使用_TrackMouseEvent函数创建漂亮按钮的一个简单类

    button圈子会

    1. **使用_TrackMouseEvent函数**:通过调用`_TrackMouseEvent`函数并传入`TRACKMOUSEEVENT`结构体作为参数来实现。其中,`TRACKMOUSEEVENT`结构体包含`cbSize`(结构体大小)和`dwFlags`(标志位)等字段,其中`...

    WM_MOUSE_FUCK_LEAVE

    - MFC没有内置的支持这些事件,但可以通过调用`_TrackMouseEvent`函数来实现。 - 需要创建一个`TRACKMOUSEEVENT`结构体并设置相应的标志位: ```cpp TRACKMOUSEEVENT tme; tme.cbSize = sizeof(TRACKMOUSEEVENT...

    Button控件学习

    - **步骤二**:调用`_TrackMouseEvent`函数,传入前面创建的`TRACKMOUSEEVENT`结构体实例作为参数。 - **步骤三**:在`OnMouseMove`或其他适当的事件处理函数中,根据鼠标位置判断是否应该触发`Hover`或`Leave`...

    java实习日记.pdf

    这些消息在处理用户交互时非常重要,例如使用__TrackMouseEvent()函数来追踪鼠标状态。 6. **SQLServer2000问题解决**:在实际工作中遇到的网站数据库加载失败的问题,通过论坛讨论和同学的帮助,找到了以下解决...

    易语言自绘选择框

    易语言自绘选择框源码,自绘选择框,测试消息,重绘_Checkbox,选择框_鼠标移动,初始化,调用旧窗口过程,GetWindowTitle,取位高,取位低,UI_API_SetWindowLong,UI_API_CallWindowProc,UI_...,SendMessage,UI_TrackMouseEvent

    TrackMouseEvent例子

    标题中的"TrackMouseEvent例子"指的是一个使用Windows API函数`TrackMouseEvent`进行鼠标事件跟踪的示例项目。在Windows编程中,`TrackMouseEvent`是一个非常重要的函数,它允许应用程序跟踪鼠标的移动,直到鼠标...

    TrackMouseEvent判断鼠标进入出来的软件源码

    在VB(Visual Basic)编程中,`TrackMouseEvent`是一个非常重要的API函数,它用于跟踪鼠标的移动事件,帮助开发者实现更精确的用户交互控制。这个标题提到的"TrackMouseEvent判断鼠标进入出来",实质上是关于如何...

    Visual C++ 编程资源大全(英文源码 控件)

    in class that provides a 'hot' look button using the _TrackMouseEvent function(17KB)<END><br>52,CLedButton_src.zip A button that looks like a LED.(24KB)<END><br>53,EllipticalButtons.zip A class ...

    [ATL/WTL]_[初级]_[窗口如何实现WM_MOUSELEAVE和WM_MOUSEHOVER]

    一旦调用了`TrackMouseEvent()`,系统就会自动发送`WM_MOUSEHOVER`和`WM_MOUSELEAVE`消息,直到窗口被销毁或者`TrackMouseEvent()`再次被调用。 通过学习和实践处理这些消息,你可以创建更动态、交互性更强的用户...

    易语言流量监控器增强版

    易语言流量监控器增强版源码,流量监控器增强版,创建互斥体,子程序_窗口函数,计算流量,取信息记录,弹出提示,文本格式化,取指定内容,取网络信息,取得窗口信息_,呼叫窗口函数地址_,TrackMouseEvent,SetWindowLong,...

    c#实现QQ上浮效果_C#

    public static extern bool TrackMouseEvent(TRACKMOUSEEVENT lpEventTrack); } ``` 在`MoveForm`方法中,我们使用了一个简单的动画效果,将窗体的移动过程分成了10步,每步之间间隔50毫秒,使得窗体的移动看起来...

    findWindowex查找窗口句柄模拟鼠标操作 spy++用法

    在IT领域,尤其是在Windows系统编程和自动化测试中,掌握如何查找窗口句柄并进行模拟鼠标操作是至关重要的技能。本文将深入探讨`findWindowex`函数的使用以及如何利用Spy++工具来辅助这一过程。...

    C#实现一个类似QQ窗体自动上卷的程序

    为此,我们定义了一个结构体`TRACKMOUSEEVENT`,并通过`DllImport`属性调用用户32位库中的`TrackMouseEvent`函数。 ```csharp [DllImport("user32")] public static extern bool TrackMouseEvent(TRACKMOUSEEVENT ...

    VC++基本鼠标操作——判断鼠标消息

    鼠标捕捉使得即使鼠标离开窗口,也能继续接收到鼠标消息,而`TrackMouseEvent`则可以自动显示鼠标进入、离开和悬停的视觉反馈。 通过理解和运用这些技术,你就能在VC++程序中实现各种复杂的鼠标操作,如拖放、选择...

    ToolTips_demo源码

    例如,`CreateWindow`函数用于创建ToolTip窗口,`SetWindowPos`用于设置其位置,`UpdateWindow`用于更新显示,而`TrackMouseEvent`则用于追踪鼠标事件,决定何时显示或隐藏ToolTip。 2. **MFC (Microsoft ...

    易语言鼠标移入移出窗口消息

    在处理鼠标事件时,可能需要调用Windows API中的某些函数,如`TrackMouseEvent` 和 `SetWindowLong`。这两个函数是Windows API的一部分,用于更精确地控制窗口的鼠标行为。 1. `TrackMouseEvent` 函数用于注册一个...

    MFC下按钮自绘的实现

    对于WM_MOUSELEAVE和WM_MOUSEHOVER消息的处理,通常在WM_MOUSEMOVE消息中调用TrackMouseEvent函数,但如果你在Windows CE中找不到这个函数,可以使用PostMessage直接发送这些消息。例如: ```cpp ::PostMessage(m_...

    CToolTipCtrl 不能被显示

    6. **位置问题**:如果工具提示位置设置不当,可能会导致显示问题,可以尝试使用`TrackMouseEvent()`来自动定位。 7. **系统设置**:用户可能修改了系统设置,禁用了工具提示。 解决这类问题的方法通常包括检查代码...

Global site tag (gtag.js) - Google Analytics