zoukankan      html  css  js  c++  java
  • Mouse For Winpad

    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还是非常舒适的,特别是躺在床上无脑戳戳戳。

  • 相关阅读:
    皮皮书屋要关掉了
    Java容器类接口:Iterator,Collection,Map
    Java容器类概述
    Linux Mint下安装JDK
    [zz]论程序员
    Java私有构造器
    List of Free Programming Books
    5种你未必知道的JavaScript和CSS交互的方法
    【HTTP】GET和POST的区别
    ASP.NET转换人民币大小金额
  • 原文地址:https://www.cnblogs.com/oplusx/p/9751208.html
Copyright © 2011-2022 走看看