鼠标控制绘图

 1 /*先写个代码对比一下:
 2 获取按键: 获取鼠标:
 3 char c; MOUSEMSG m;
 4 if (kbhit()) if (MouseHit())
 5 c = getch(); m = GetMouseMsg();*/
 6 /*通过该结构体,我们可以获取鼠标的如下信息:
 7 struct MOUSEMSG
 8 {
 9 UINT uMsg; // 当前鼠标消息
10 bool mkCtrl; // Ctrl 键是否按下
11 bool mkShift; // Shift 键是否按下
12 bool mkLButton; // 鼠标左键是否按下
13 bool mkMButton; // 鼠标中键是否按下
14 bool mkRButton; // 鼠标右键是否按下
15 int x; // 当前鼠标 x 坐标
16 int y; // 当前鼠标 y 坐标
17 int wheel; // 鼠标滚轮滚动值
18 };
19 其中,“当前鼠标消息”可能是以下值:
20 WM_MOUSEMOVE 鼠标移动消息
21 WM_MOUSEWHEEL 鼠标滚轮拨动消息
22 WM_LBUTTONDOWN 左键按下消息
23 WM_LBUTTONUP 左键弹起消息
24 WM_LBUTTONDBLCLK 左键双击消息
25 WM_MBUTTONDOWN 中键按下消息
26 WM_MBUTTONUP 中键弹起消息
27 WM_MBUTTONDBLCLK 中键双击消息
28 WM_RBUTTONDOWN 右键按下消息
29 WM_RBUTTONUP 右键弹起消息
30 WM_RBUTTONDBLCLK 右键双击消息*/
31 #include<graphics.h>
32 #include<conio.h>
33 int main()
34 {
35     initgraph(640,480);//初始化图形窗口
36     MOUSEMSG m;//定义鼠标消息
37     while(true)
38     {
39         m=GetMouseMsg();//获取一条鼠标消息
40         switch(m.uMsg)
41         {
42         case WM_MOUSEMOVE:putpixel(m.x,m.y,RED);break;//鼠标移动的时候画红色的圆点
43         case WM_LBUTTONDOWN:
44                     if(m.mkCtrl)
45                         rectangle(m.x-15,m.y-15,m.x+15,m.y+15);//如果点鼠标左键的同时按下CTRL画大方块
46                         else
47                         rectangle(m.x-5,m.y-5,m.x+5,m.y+5);break;//否则画小方块
48         case WM_RBUTTONUP:return;//按鼠标右键退出
49         }
50     }
51     getch();
52     closegraph();
53 }
View Code
原文地址:https://www.cnblogs.com/firstsy0709/p/3646238.html