1 基本鼠标消息
    WM_LBUTTONDOWN - 鼠标左键按下
    WM_LBUTTONUP - 鼠标左键抬起
    WM_RBUTTONDOWN - 鼠标右键按下
    WM_RBUTTONUP - 鼠标右键抬起
    WM_MOUSEMOVE - 鼠标移动消息
2 双击消息
    WM_LBUTTONDBCLK - 鼠标左键双击
    WM_RBUTTONDBCLK - 鼠标右键双击
3 滚轮消息

WM_MOUSEWHEEL - 鼠标滚轮消息

以上消息附加参数(WPARAM和LPARAM)说明:

1 以上消息中的LPARAM参数均表示当前鼠标的位置,其中,LOWORD表示X坐标,HIWORD表示Y坐标

2 以上消息除了WM_MOUSEWHEEL消息之外,其他消息的WPARAM均表示其他按键的状态,如ALT、SHIFT等

3 WM_MOUSEWHEEL消息的WPARAM的LOWORD表示其他按键的状态,如ALT、SHIFT等。HIWORD表示滚轮的偏移量,这个值是120的倍数,通过正负值表示滚动方向(正:向前滚动,负向后滚动)

附加鼠标消息学习代码:

#include<Windows.h>
HINSTANCE g_hInstance;
HANDLE hOutputHandle;
int n_xPos = 100, n_yPos = 100;
void OnPaint(HWND hWnd)
{PAINTSTRUCT ps = { 0 };HDC hDC = BeginPaint(hWnd, &ps);TextOut(hDC, n_xPos, n_yPos, __TEXT("hello"), lstrlen(__TEXT("hello")));EndPaint(hWnd, &ps);TCHAR szText[256] = { 0 };lstrcpy(szText, __TEXT("WM_PAINT\n"));WriteConsole(hOutputHandle, szText, lstrlen(szText), NULL, NULL);
}void OnLButtonDown(WPARAM wParam,LPARAM lParam)
{TCHAR szText[256] = { 0 };wsprintf(szText, __TEXT("WM_LBUTTONDOWN:%08X,(%d,%d)\n"), wParam, LOWORD(lParam), HIWORD(lParam));WriteConsole(hOutputHandle, szText, lstrlen(szText), NULL, NULL);
}void OnLButtonUp(WPARAM wParam, LPARAM lParam)
{TCHAR szText[256] = { 0 };wsprintf(szText, __TEXT("WM_LBUTTONUP:%08X,(%d,%d)\n"), wParam, LOWORD(lParam), HIWORD(lParam));WriteConsole(hOutputHandle, szText, lstrlen(szText), NULL, NULL);
}void OnLButtonDbclk(WPARAM wParam,LPARAM lParam)
{TCHAR szText[256] = { 0 };wsprintf(szText, __TEXT("WM_LBUTTONDBLCLK:%08X,(%d,%d)\n"), wParam, LOWORD(lParam), HIWORD(lParam));WriteConsole(hOutputHandle, szText, lstrlen(szText), NULL, NULL);
}void OnMouseMove(HWND hWnd,WPARAM wParam, LPARAM lParam)
{TCHAR szText[256] = { 0 };wsprintf(szText, __TEXT("WM_MOUSEMOVE:%08X,(%d,%d)\n"), wParam, LOWORD(lParam), HIWORD(lParam));WriteConsole(hOutputHandle, szText, lstrlen(szText), NULL, NULL);n_xPos = LOWORD(lParam);n_yPos = HIWORD(lParam);InvalidateRect(hWnd, NULL, TRUE);
}void OnMouseWheel(WPARAM wParam, LPARAM lParam)
{TCHAR szText[256] = { 0 };SHORT num = HIWORD(wParam);wsprintf(szText, __TEXT("WM_MOUSEWHEEL:%08X,%d,(%d,%d)\n"), LOWORD(wParam), num, LOWORD(lParam), HIWORD(lParam));WriteConsole(hOutputHandle, szText, lstrlen(szText), NULL, NULL);
}LRESULT CALLBACK MyProc(HWND   hWnd, UINT   uMsg, WPARAM wParam, LPARAM lParam)
{switch (uMsg){//鼠标消息case WM_MOUSEWHEEL:OnMouseWheel(wParam,lParam);break;case WM_MOUSEMOVE:OnMouseMove(hWnd,wParam,lParam);break;case WM_LBUTTONDBLCLK:OnLButtonDbclk(wParam,lParam);break;case WM_LBUTTONDOWN:OnLButtonDown(wParam,lParam);break;case WM_LBUTTONUP:OnLButtonUp(wParam, lParam);break;case WM_PAINT:OnPaint(hWnd);break;case WM_SYSCOMMAND:if (wParam == SC_CLOSE){if (IDOK == MessageBox(hWnd, __TEXT("确定要关闭窗口?"), __TEXT("提示"), MB_OKCANCEL)){PostQuitMessage(0);}else{return 0;}}break;}return DefWindowProc(hWnd, uMsg, wParam, lParam);
}ATOM Register(LPCWSTR className)
{WNDCLASSEX wc = { 0 };wc.cbClsExtra = 0;wc.cbSize = sizeof(WNDCLASSEX);wc.cbWndExtra = 0;wc.hbrBackground = (HBRUSH)COLOR_WINDOW;wc.hCursor = NULL;wc.hIcon = NULL;wc.hIconSm = NULL;wc.hInstance = g_hInstance;wc.lpfnWndProc = MyProc;wc.lpszClassName = className;wc.lpszMenuName = NULL;//要窗口实现双击功能,需要在注册窗口类中添加 CS_DBLCLKS 这种风格wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;return RegisterClassEx(&wc);
}HWND Create(LPCWSTR className, LPCWSTR windowName)
{return CreateWindowEx(0, className, windowName, WS_OVERLAPPEDWINDOW, 100, 100, 600, 600, NULL, NULL, g_hInstance, NULL);
}void Show(HWND hWnd)
{ShowWindow(hWnd, SW_SHOW);UpdateWindow(hWnd);
}void Message()
{MSG ms = { 0 };while (GetMessage(&ms, NULL, 0, 0)){TranslateMessage(&ms);DispatchMessage(&ms);}
}int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{AllocConsole();g_hInstance = hInstance;hOutputHandle = GetStdHandle(STD_OUTPUT_HANDLE);Register(__TEXT("Main"));HWND hWnd = Create(__TEXT("Main"), __TEXT("This is test"));Show(hWnd);Message();return 0;
}

WIN32学习——鼠标消息相关推荐

  1. 10 Windows编程——鼠标消息

    和鼠标相关的三个属于:click,double-click,drag 鼠标消息和键盘消息不同:只要鼠标跨越某个窗口,或者在某个窗口中按键,消息. 客户去鼠标消息 WM_MOUSEMOVE WM_[L, ...

  2. Win32学习(七) 鼠标消息

    基本鼠标消息 WM_LBUTTONDOWN - 鼠标左键按下 WM_LBUTTONUP - 鼠标左键抬起 WM_RBUTTONDOWN - 鼠标右键按下 WM_RBUTTONUP - 鼠标右键抬起 W ...

  3. Win32 鼠标消息 - 客户区鼠标消息、非客户区鼠标消息、击中测试、鼠标滚轮

    注:以下内容为学习笔记,多数是从书本.资料中得来,只为加深印象,及日后参考.然而本人表达能力较差,写的不好.因非翻译.非转载,只好选原创,但多数乃摘抄,实为惭愧.但若能帮助一二访客,幸甚! 注:以下内 ...

  4. Win32汇编笔记-消息基础

    WIN32的消息机制 windows系统是一个消息驱动的OS,操作通过处理各种消息来响应用户的操作. 对于每一个带有窗口的线程,系统都会给他分配一个自己的消息队列,用于处理消息派送(Dispatch) ...

  5. 随想录(easyx中的键盘输入和鼠标消息)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 我曾经写过一篇关于easyx的blog,地址在这.easyx是基于win32 api最简单的图 ...

  6. Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog

    Win32学习笔记 作者: 姜学哲(netsail0@163.net) 教材: Windows程序设计(第五版)北京大学出版社  [美]Charles Petzold 著  北京博彦科技发展有限公司 ...

  7. 滴水逆向win32学习笔记1

    滴水逆向win32学习笔记 一.字符编码 基本介绍 关于utf-16.utf-8和unicode的关系 BOM头 二.宽字符 基本介绍 常用函数 三.Win32 API中的宽字符 什么是win32 A ...

  8. Win32 API - Windows 消息

    Win32 API - Windows 消息[@more@] windows消息 消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键 ...

  9. vc鼠标消息与键盘消息

    在Microsoft Windows 中,键盘和鼠标是两个标准的用户输入源,在一些交叠的操作中通常相互补充使用.当然,鼠标在今天的应用程序中比10年前使用得更为广泛.甚至在一些应用程序中,我们更习惯于 ...

最新文章

  1. 限时抢订!价值4800元TechNet Plus赠阅一年!今天己到哈~~~
  2. php 模板引擎 优点,Smarty模板引擎的优点
  3. SAP Fiori Elements 应用里和 Fiori 3 相关的外观设置
  4. vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法
  5. sql case when then else多个条件_SQL-多表查询
  6. 多款 D-Link 路由器受多个 RCE 漏洞影响
  7. SocksProxy代理服务器下载,附IE使用socks代理的方法
  8. 国内信号处理类EI期刊
  9. 泛微云桥e-Bridge安装手册
  10. 路由器如何设置无线桥接
  11. php转换大小写函数,149-PHP大小写转换函数
  12. 如何区分前端bug还是后端bug?
  13. python pymysql mysql保存表情符
  14. 鸿蒙系统发布会门票,早鸟票最后一天!继鸿蒙系统发布后,华为又准备搞事情了!...
  15. Jenkins集成Sonar(3/3)- 安装SonarQube Scanner进行扫描(离线安装)
  16. J-LINK 烧录程序
  17. 领域分类的问题_别人的问题领域
  18. 您好呀 Git ,我是小二!
  19. SpringBoot中cron表达式周一到周五运行设置
  20. 买房知识总结,学习笔记【6000字】【原创】

热门文章

  1. Android WiFi开发教程(二)——WiFi的搜索和连接
  2. android取图片颜色代码,Android Palette 提取图片的主色调
  3. 环形链表的快慢指针相遇问题证明
  4. 农夫过河【数据结构实验报告】
  5. list、set、map 之间的区别是什么?_SFTP是什么?与FTP之间有什么区别
  6. ajax.then()用法,使用es6的then()方法封装jquery的ajax请求
  7. 102-RTKLIB中的相位解缠
  8. Python,Javascript和Web自动化
  9. 算法笔记:加勒比海盗船---最优装载问题 如何将最多的宝物装上船 贪心求解 C++
  10. 微信小程序jsEnginScriptError错误