1、获取鼠标位置(在屏幕的位置)

  CPoint m_mouse;

GetCursorPos(&m_mouse);

2、 屏幕转化为客户端(控件的相对位置)& 客户端位置转化为屏幕位置

ClientToScreen(this->m_hwnd,m_mouse);  //客户端位置转化为屏幕位置

ScreenToClient(this->m_hwnd,m_mouse) ;  //屏幕转化为客户端

3、获取控件关于在屏幕的位置

CRect  rc

GetWindowRect(&rc);

4、检测鼠标的action的方式多,自己用的多的是msdn上介绍的callback的鼠标钩子(低级钩子)函数来实现

    1> 、对鼠标进行的几个全局变量进行声明:

     将这部分放置在C++类的外部  

/*
全局变量和全局函数定义
设定一个鼠标低级钩子变量
*/ HHOOK mouse_Hook ;
LRESULT CALLBACK LowLevelMouseProc ( INT nCode,
WPARAM wParam,
LPARAM lParam
);
BOOL UninstallHook(); //卸载
BOOL InstallHook(); //安装

2>、在构造函数中初始化

 mouse_Hook=NULL;   //将钩子NULL

3>、在初始化函数中安装Hook

 InstallHook()

4>、在析构函数中添加

UninstallHook()

5>、 在当前cpp的类外中定义声明的三个函数

 BOOL InstallKbHook( )
{ if (mouse_Hook) UninstallHook();
mouse_Hook = SetWindowsHookEx(WH_MOUSE_LL,
(HOOKPROC)(LowLevelMouseProc), AfxGetApp()->m_hInstance, NULL); return( mouse_Hook != NULL);
} BOOL UninstallHook()
{ BOOL jud = FALSE;
if (mouse_Hook) {
jud= UnhookWindowsHookEx(mouse_Hook );
mouse_Hook = NULL; //set NULL
} return jud;
} LRESULT CALLBACK LowLevelMouseProc (INT nCode, WPARAM wParam, LPARAM lParam)
{
CPoint _mousepoint;
MSLLHOOKSTRUCT *pkbhs = (MSLLHOOKSTRUCT *)lParam;
switch (nCode)
{ case HC_ACTION:
{
//鼠标左击
if(wParam == WM_LBUTTONDOWN||wParam == WM_RBUTTONDOWN||wParam == WM_MBUTTONDOWN||wParam ==WM_LBUTTONUP||wParam ==WM_RBUTTONUP||wParam == WM_MBUTTONUP){
//获取鼠标的位置,并进行必要的判断 //鼠标右键按下
if(Mmdlg!=NULL){
if( Mmdlg->setingmenu!=NULL&& Mmdlg->bo_back!=)
{
//如果鼠标不在当前客户端位置之内
GetCursorPos(&_mousepoint);
CRect m_crect;
//Mmdlg->setingmenu->GetClientRect(m_crect);
Mmdlg->setingmenu->GetWindowRect(m_crect);
//ScreenToClient(Mmdlg->setingmenu->m_hWnd,&m_crect);
if(m_crect.bottom>_mousepoint.y && m_crect.top<_mousepoint.y &&
m_crect.left<_mousepoint.x && m_crect.right >_mousepoint.x
){
; //啥也不干
}
else{
delete [] Mmdlg->setingmenu;
Mmdlg->setingmenu=NULL;
}
}
Mmdlg->bo_back=;
}
}
}
default: break;
} return CallNextHookEx (NULL, nCode, wParam, lParam);
}

        

C++获取鼠标位置及全局检测鼠标行为的更多相关文章

  1. C# 图像处理:获取鼠标位置信息(全局)

    Point ms = Control.MousePosition; //获取鼠标位置 this.label2.Text = string.Format("{0}:{1}", ms. ...

  2. 如何在CSS中映射的鼠标位置,并实现通过鼠标移动控制页面元素效果

    映射鼠标位置或实现拖拽效果,我们可以在 JavaScript 中做到这一点.但实际上,在CSS中有更加简洁的方法,我们可以在不使用JavaScript 的情况下,仍然可以实现相同的功能! 只使用CSS ...

  3. Adobe Edge Animate –获取鼠标位置及跟随鼠标功能实现

    Adobe Edge Animate –获取鼠标位置及跟随鼠标功能实现 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 在网络上浏览有关Edge相关问题的时 ...

  4. jq获取鼠标位置

    jq获取鼠标位置 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  5. jquery 获取鼠标位置

    //获取鼠标位置 $(function(){ $('body').mousemove(function(e) { e = e || window.event; __xx = e.pageX || e. ...

  6. javaScript中获取鼠标位置的理解

    获取鼠标坐标值的总结为了避免混淆知识点 通过<javaScript高级程序设计>查到这些 event.clientX event.clientY event.pageX event.pag ...

  7. JavaScript获取鼠标位置的三种方法

    在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的游览器下会有不同的结果甚至是有的游览器下没结果,这篇文章就鼠标点击位置坐标获取做一些简单的总结. 获取鼠 ...

  8. [cb]SceneView 获取鼠标位置

    扩展需求 在Scene视图中获取鼠标的位置 Demo 在Scene视图中,当鼠标点击时实例化一个Cube 重点部分 实现代码 using UnityEngine; using UnityEditor; ...

  9. WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法

    一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition(e.Source as FrameworkElement); Point p = (e.S ...

随机推荐

  1. ASP.NET 文件后缀名详解

    sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息. .csproj:项目文件,创建应用程序所需的引用.数据连接.文件夹和文件的信息. .aspx:Web 窗体页由两部分组 ...

  2. c++网络编程错误(WSAStartup)

    在使用CodeBlocks编译C++程序时, 编译程序的时候出现如下错误: undefined reference to `inet_addr@4'undefined reference to `ge ...

  3. [Ubuntu] Profile error when launching google-chrome

    Whenever I launch google-chrome, a window is displayed which contains this message: Your profile cou ...

  4. 微信开发那点事(No.001)

    MXS&Vincene  ─╄OvЁ  &0000024─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  5. 本地json文件的编辑器,node-webkit开发的exe程序

    首发:个人博客,更新&纠错&回复 在昨天的dota契合度计算器中,用到了dota英雄数据和dota玩家数据这两个数据库,为了便于网页应用使用,这两个数据库的存储格式是json,即her ...

  6. linux上使用amoeba实现MySql集群,以及读写分离,主从复制

    一.由于是MySql集群,所以就不可能只有一个MySql,需要多个MySql,具体安装步骤,可以参考http://www.cnblogs.com/ywzq/p/4882140.html这个地址进行安装 ...

  7. Script 简单语句的练习题

    猜拳 <body>请输入剪刀或者石头或者布:<br /><input type="text" id="A"/><inp ...

  8. IntelliJ IDEA使用(3)——IDEA连接Git

    摘要: Intellij IDEA作为最强大智能的IDE,内部已经集成了Git的功能,所以不用安装插件,连接Git@OSC也非常容易 首先安装git for windows 推荐使用这个:http:/ ...

  9. python(三)set集合

    set集合的特点是无序.不重复序列 创建集合: 1 2 3 4 5 6 7 8 9 10 11 12 13 a.s1 = {11,22} b.s2 = set() c.s3 = set([11,22, ...

  10. Android自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...