和鼠标相关的三个属于:click,double-click,drag

鼠标消息和键盘消息不同:只要鼠标跨越某个窗口,或者在某个窗口中按键,消息。

客户去鼠标消息

WM_MOUSEMOVE

WM_[L,M,R] BUTTONDOWN

WM_[L,M,R] BUTTONUP

WM_[L,M,R] BUTTONDBLCLK

对于这些消息,lParam的低字节为x坐标,高字节为y坐标。
wParam只是鼠标按键以及shift和Ctr1按键的状态(这个和键盘消息相似)。
要测试鼠标按钮是否按下:MK_LBUTTON,MK_MBUTTON,MK_RBUTTON,MK_SHIFT,MK_CONTROL.

非客户区鼠标消息:
WM_NCMOUS EMOVE
WM_NCLBUTTONDOWN.
WM_NCLBUTTONUP
WM_NCLBUTTONDBLCLK

 1 #include<Windows.h>
 2 #include<WinUser.h>
 3 #include<tchar.h>
 4 #include<stdio.h>
 5
 6 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
 7
 8 int WinMain(HINSTANCE hInst, HINSTANCE tmp, LPSTR szCmd, int nShow)
 9 {
10     WNDCLASS WndClass;
11     TCHAR* ClassName = TEXT("MyClass");
12     HWND hwnd;
13     MSG msg;
14
15     WndClass.cbClsExtra = 0;
16     WndClass.cbWndExtra = 0;
17     WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
18     WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
19     WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
20     WndClass.hInstance = hInst;
21     WndClass.lpfnWndProc = WindProc;
22     WndClass.lpszClassName = ClassName;
23     WndClass.lpszMenuName = NULL;
24     WndClass.style = CS_VREDRAW | CS_HREDRAW;
25
26     RegisterClass(&WndClass);
27     hwnd = CreateWindow(ClassName, TEXT("Hello"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInst, NULL);
28     ShowWindow(hwnd, nShow);
29     UpdateWindow(hwnd);
30
31     while (GetMessage(&msg, NULL, 0, 0))
32     {
33         TranslateMessage(&msg);
34         DispatchMessage(&msg);
35     }
36     return 0;
37 }
38
39
40
41 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
42 {
43     HDC hdc;
44     PAINTSTRUCT pt;
45     TCHAR *rectwords = TEXT("我在学习鼠标消息");
46     static int i;
47     switch (message)
48     {
49     case WM_CREATE:
50         return 0;
51     case WM_SIZE:
52         return 0;
53     case WM_PAINT:
54         hdc = BeginPaint(hwnd, &pt);
55         Rectangle(hdc, 10, 10, 100, 100);
56         if (i)
57         {
58             TextOut(hdc, 100, 10, rectwords, _tcslen(rectwords));
59         }
60         EndPaint(hwnd, &pt);
61         return 0;
62     case WM_CHAR:
63         return 0;
64     case WM_LBUTTONUP:
65         i = 0;
66         InvalidateRect(hwnd, NULL, TRUE);
67         return 0;
68     case WM_LBUTTONDOWN:
69         InvalidateRect(hwnd, NULL, TRUE);
70         if (LOWORD(lParam)>10 && LOWORD(lParam)<100 && HIWORD(lParam)>10 && HIWORD(lParam)<100)
71         {
72             i = 1;
73         }
74         return 0;
75     case WM_MOUSEMOVE:
76         hdc = GetDC(hwnd);
77         if (wParam&MK_LBUTTON)
78         {
79             SetPixel(hdc, LOWORD(lParam), HIWORD(lParam), 0);
80         }
81         ReleaseDC(hwnd, hdc);
82         return 0;
83     case WM_DESTROY:
84         PostQuitMessage(0);
85         return 0;
86     default:
87         break;
88     }
89
90     return DefWindowProc(hwnd, message, wParam, lParam);
91 }

View Code

转载于:https://www.cnblogs.com/kelamoyujuzhen/p/9322262.html

10 Windows编程——鼠标消息相关推荐

  1. windows主要鼠标消息

    windows主要鼠标消息 WM_LBUTTONDOWN 鼠标停留在客户区,同时鼠标左键按下 WM_LBUTTONUP   鼠标左键释放 WM_RBUTTONDOWN   鼠标停留在客户区,邮件按下 ...

  2. Windows编程 从消息窗口到基本窗口 游戏循环窗口框架的简单实现

    版本:VS2015 语言:C++ 本来想昨天写个消息窗口的内容,讲一些好玩的东西,不过没有时间了,就放到一起了. 今天正好把书的第二章看完了,感觉良好,Windows的编程确实难度要高,一下子会有一大 ...

  3. windows编程,消息函数中拦截消息的问题

    很多年没有写windows窗口程序了,今天自制基于vulkan的程序时遇到了一些问题,部分代码如下: LRESULT CALLBACK XWindow::WndProc(HWND hWnd, UINT ...

  4. window编程_消息分类

    Window应用程序利用Windows消息(Message) 与应用程序及系统进行信息交换. 消息分为: 消息号:有事先定义好的消息名标识 字节参数(wParam):用于提供消息的附加信息 长字节参数 ...

  5. windows编程之鼠标消息总结

    1 确定鼠标是否存在:fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ; 2 获取鼠标上按键数目:cButtons = GetSystemMetrics (SM ...

  6. Windows编程捕获特定窗口及键盘鼠标消息模拟

    Windows编程捕获特定窗口及键盘鼠标消息模拟 一.简介 二.使用到的API简介 三.获取Windows记事本的编辑区窗口的句柄并模拟输入操作 1.分析 2.代码一 3.代码二 四.后记 一.简介 ...

  7. windows 编程 —— 消息与参数(滚动条、键盘、鼠标)

    目录: 滚动条 键盘 鼠标 滚动条ScrollBar 发送消息:WM_VSCROLL和WM_HSCROLL 参数wParam:wParam消息参数被分为一个低字组和一个高字组.wParam的低字组是一 ...

  8. windows编程中wParam和lParam消息

    windows编程中wParam和lParam消息 1.WM_PAINT消息,LOWORD(lParam)是客户区的宽,HIWORD(lParam)是客户区的高. 2 滚动条WM_VSCROLL或WM ...

  9. 【转】windows程序设计(14):鼠标消息详解

    关于鼠标的一些细节知识: 通常,我们发消息时,都是对一个特定的窗口,但是对于鼠标消息却不然:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口消息处理程序就会收到鼠标消息,而不管该窗口是否活动或者是 ...

最新文章

  1. java string 占位符_驳《阿里「Java开发手册」中的1个bug》?
  2. windows下一个,OracleServiceXXX和Oracle 关系实例
  3. [TypeScript] Deeply mark all the properties of a type as read-only in TypeScript
  4. java反射--注解的定义与运用以及权限拦截
  5. 记录自己灵感闪现的开发语录 每日更新 记录变强或者变得更菜的过程
  6. java三目运算符简化代码_如何使用传播运算符简化代码
  7. asp.net网站的配置文件
  8. 辐射避难所买了东西显示服务器异常,辐射避难所常见问题汇总 专治疑难杂症...
  9. 在运行hadoopdb\hive\hadoop源码时不能正确调用自定义core-site.xml等配置文件
  10. JavaScript基础---语言基础(4)
  11. 怎么用xmind整理我们获取的杂乱的信息
  12. CSDN账号注销的问题:手机号注册的CSDN号是可以注销的
  13. 周立功串口服务器维修方法,周立功医生| 告诉你RS485通信的小秘密
  14. 杰奇为什么只能用php5.2,若夏小说新版 杰奇最新2.2专业版内核 WAP端+电脑端+在线充值+关关采集器(送规则)...
  15. 波兰表达式和逆波兰表达式
  16. 人工神经网络心得体会_人工智能学习心得
  17. java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more tha
  18. 主要计算机硬件部件,计算机硬件各部件的主要功能
  19. stm32过零检测电路
  20. C++ 域名转IP地址

热门文章

  1. ie下面出现Notice: Undefined index: HTTP_REFERER 的解决办法
  2. cron计划任务使用
  3. 破解ERP的使用成本之谜
  4. Mac无损音乐播放器Audirvana plus
  5. Android进阶:十三、自定义类加载器加载加密类文件
  6. Beaker:一个基于Electron的点对点Web浏览器
  7. [case39]聊聊jdk httpclient的executor
  8. python学习第一模块练习
  9. 一天一个设计模式(3)——单例模式
  10. 音频数据文件格式(PCM,WAV,MIDI)简记