Mouse For Winpad

用WIN10的平板模式玩游戏总会到一些兼容性问题,之前在推Re:LieF的时候就遇到了触屏不能像鼠标指针一样进行游戏,于是猜想一定是程序没进行标准化MFC的编程。于是自己写了一个假窗口模拟鼠标,传递鼠标消息给游戏程序来实现点击。

源码在 Link to (GitHub)[https://github.com/oplusx/MouseForWinPad]

开发思路

  1. WINDOWS系统下,窗口之间通过WM_MESSAGE消息进行信息传递
  2. 鼠标的移动和点击也是通过消息传递来实现的
  3. 每个窗口都有一个句柄的概念HWND
  4. 向某HWND传递WM_MESSAGE就是最简单那的模拟

实现方法

  1. 获取当前需要传递消息的窗口句柄
void CMouseForWinPadDlg::OnBnClickedSet()
{
RECT rect;
this->GetWindowRect(&rect);//利用当前窗口所在的位置取左上角往外偏移1像素位置的窗口
LONG x = rect.left - 1;
LONG y = rect.top - 1;
POINT testPoint;
CWnd* testWnd = WindowFromPoint(testPoint);
if (testWnd != NULL)
{
while (testWnd->GetParent() != NULL)
{
testWnd = testWnd->GetParent();
}
m_hTarget = testWnd->m_hWnd;//获得句柄
}
}
  1. 向窗口传递消息
LONG lParam = MAKELPARAM(m_lTargetX, m_lTargetY);//目标窗口左上角为零点,所生成的相对坐标
::SetCursorPos(m_lAbsoluteX, m_lAbsoluteY);//设置指针的绝对坐标
::SendMessage(m_hTarget, WM_MOUSEMOVE, 0, lParam);
::SendMessage(m_hTarget, WM_LBUTTONDOWN, 0, lParam);
::PostMessage(m_hTarget, WM_LBUTTONUP, 0, lParam);

写在最后

WIN10的触屏体验多少有些欠缺的哦,否则用WIN平板玩GAL还是非常舒适的,特别是躺在床上无脑戳戳戳。

Mouse For Winpad的更多相关文章

  1. 鼠标mouse事件冒泡处理

    简单的鼠标移动事件: 进入 mouseenter:不冒泡 mouseover: 冒泡 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件 只有在鼠标指针穿过被选元素时,才会触发 m ...

  2. javascript code snippet -- Forwarding Mouse Events Through Layers

    Anyone who has worked with web apps has likely created a masking element at some point, and the grea ...

  3. Mouse.OverrideCursor

    介绍: 获取和设置整个应用程序的光标,WPF父元素将覆盖所有子元素的光标. WPF设置控件的光标: WPF 中每个光标通过一个System.Windows.Input.Cursor表示, 获取Curs ...

  4. mouse scrollings and zooming operations in linux & windows are opposite

    mouse scrollings and zooming operations in linux & windows are opposite. windows中, 鼠标滚动的方向是: 查看页 ...

  5. ACM Greedy Mouse

    Greedy Mouse 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 A fat mouse prepared M pounds of cat food,read ...

  6. Java基础之处理事件——选项按钮的鼠标监听器(Lottery 2 with mouse listener)

    控制台程序. 定义监听器类有许多方式.下面把监听器类定义为单独的类MouseHandler: // Mouse event handler for a selection button import ...

  7. Set Font Properties On Mouse Hover Of Push Button And Text Items At Run time In Oracle Forms

    Change the font size and weight of text items and push buttons on mouse hover in Oracle Forms.   An ...

  8. I.MX6 linux Qt 同时支持Touch、mouse

    /***************************************************************************** * I.MX6 linux Qt 同时支持 ...

  9. 通过Mouse Without Borders在多台机器上共享键盘鼠标

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:通过Mouse Without Borders在多台机器上共享键盘鼠标.

随机推荐

  1. django第三课 模版

    第一步 创建项目文件: django-admin.py startproject *** 第二步 进入该文件下创建文件夹templates,在该文件夹下创建thanks.html <!DOCTY ...

  2. Spring Security构建Rest服务-0400-使用切片拦截rest服务

    Restful API的拦截: 1,过滤器(Filter) 2,拦截器(Interceptor) 3,切片(Aspect) 1,过滤器 和传统javaweb一鸟样,例,记录controller执行时间 ...

  3. 【优化】JSON.stringify()使用优化

    JSON.stringify 有性能的问题,移动端尤其明显.下面我们来看看如何优化. 原始写法: function store(key, val) { localStorage.setItem(key ...

  4. Automapper问题记录

    在Automapper使用中会碰到一些未能映射或者错误的问题,这些问题可能会经常忘记如何处理,想到一些就记录一些: 映射值有时为空又不报错的情况 这很可能是由于目标类中的部分属性有问题导致的,最简单的 ...

  5. 将AJAX Post的Data转为对应的Class

    在使用DataTables从服务端获取数据时,在非MVC的情况下没有MVC的自动绑定功能,所以需要自己写一个绑定,将Post过来的InputStream转为对应的类. HTML: <form i ...

  6. ARP地址解析协议原理

    概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...

  7. golang基础--func函数

    函数function Go函数不支持 嵌套, 重载和默认参数 支持以下特性: 无须声明原型,不定长度长度变参,多返回值,命名返回值参数,匿名函数,闭包 定义函数使用关键字func,且左侧大括号不能另起 ...

  8. HTML5中Access-Control-Allow-Origin解决跨域问题

    www.111cn.net 更新:2015-01-07 编辑:flyfox 来源:转载 跨域在开发中一些是一个比较常见的问题虽然有json或者xml来解决,现在html5开始流行了,我们可以通过Acc ...

  9. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  10. Head First Python学习笔记4——处理数据

    有这么几组数据需要你处理: James 2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22 Julia 2.59,2.11,2:11,2:23,3-10,2-23 ...