鼠标在某个控件上按下,然后离开后弹起,如何捕获这个鼠标弹起事件

默认情况下当鼠标移出控件外部后控件将获取不到WM_LBUTTONUP消息。
以下通过SetCapture函数实现获取。

SetCapture 函数功能:

该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。

LRESULT CALLBACK TestProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_LBUTTONDOWN: //左键按下
{
SetCapture(hwnd);
}
break;
case WM_MOUSEMOVE: //鼠标按下移动
{
if(GetCapture() == hwnd)
{
//鼠标按下并移动...
}
}
break;
case WM_LBUTTONUP: //左键弹起
{
if(GetCapture() == hwnd)
ReleaseCapture(); //当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。
}
break;

return 0;
}

}

时间: 2024-10-09 21:24:39

鼠标在某个控件上按下,然后离开后弹起,如何捕获这个鼠标弹起事件的相关文章

VC/MFC 当鼠标移到控件上时显示提示信息

VC/MFC 当鼠标移到控件上时显示提示信息 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法. 一般用法步骤:  添加CToolTipCtrl成员变量 m_tt.  在父窗口中调用EnableToolTips(TRUE);  在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pW

C# GDI在控件上绘图

本文以以在chart控件上和窗体上画矩形为例子 不多解释了,代码很简单. 还有一些童鞋要别的源码,给我发邮箱吧 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Syst

支持各种控件上/下拉刷新的android-pulltorefresh

android- pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新,如ListView.ViewPager.WevView. ExpandableListView.GridView.(Horizontal) ScrollView.Fragment上下左右拉动刷新.并且他 实现的下拉刷新ListView在item不足一屏情况下也不会显示刷新提示,体验很好. 特性 直接上拉.下拉刷新,也可以从底层直接回到顶部. 滑动动画通配所有的设备. 支持Android 2.3 版本之

如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主窗口有菜单.工具条等,想用鼠标绘图, 把鼠标轨迹映射到窗口部件上,这些问题. 其实最主要的是获得窗口部件的起始点相对主窗口的位置. 例如:在主窗口拖入一个QScrollArea 在其上放一个QLabel用来显示鼠标事件. 可以在ui对象结构上看到如下结构. 大家知道,我们可以用pos()来获得某一窗

Qt判断鼠标在控件上

QT判断鼠标是否在某子窗口控件上方 需要注意的是,子窗口获取geometry,是相对于父窗口的相对位置,QCursor::pos()获取的是鼠标绝对位置,要不将父窗口的相对位置进行换算,要不将鼠标的绝对位置进行换算,这里本文采用将鼠标绝对位置换算到控件上,示例代码如下: if(ui->groupBox->geometry().contains(this->mapFromGlobal(QCursor::pos()))) 原文地址:https://www.cnblogs.com/wangji

WPF 使用鼠标拖动一个控件的实现[2018.7.15]

原文:WPF 使用鼠标拖动一个控件的实现[2018.7.15] Q:已经把一个Shape和一个TextBlock组合起来放到了一个Grid中,现在想要实现用鼠标拖动这个Grid到任意位置的功能,如何做? <Grid Height="50" Width="50"> <Ellipse Fill="Yellow" Stroke="Blue" Height="50" Width="50&

Android控件上添加图片

项目中有一个点赞功能,点赞的小图标添加在点赞列表旁边,在xml里可以进行设置,也可以在代码中进行绘图. 下面是两种方法的设置: 1.xml里:一些控件:button.textView等等里面有个属性是android:drawableLeft 就可以将pic设置到text的左边.good.... 2.代码中: TextView txtlikedList = new TextView(this.getContext()); Drawable drawable= getResources().getD

OpenCV获取摄像头视频并在MFC的Picture控件上显示

分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/04/2535190.html http://blog.sina.com.cn/s/blog_6dbe9bdb0100nii7.html http://blog.csdn.net/augusdi/article/details/8762961 #include "stdafx.h" #in

对话框上动态控件的创建、在Picture Control控件上显示图片

1  MFC对话框之上的动态控件的创建 对话框上的控件是MFC类的一个具体对象. 当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息.响应函数以及变量. 当需要在对话框中动态的创建某个控件时,就需要手动来代替类向导为动态控件添加消息.响应函数及变量. 动态创建控件时,可按照以下步骤进行: (1) 明确控件所属于的类 每一个控件都对应着一个类(例如按钮Button所属于的类为CButton). 如,在程序中我们需要用CButton类创建一个具体的按钮对象,并用函数指示它在对话框之上的