鼠标控制绘图
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 }