简单的鼠标操作<一个填充格子的小游戏>

 1 #include "graphics.h"
 2 #include "conio.h"
 3 
 4 
 5 void main(){
 6     // 初始化界面
 7     initgraph(640, 480); 
 8 
 9     for (int x = 0; x < 451; x += 50){     // 画 10 * 4 个50 * 50 的空白格子
10         for (int y = 0; y < 151; y += 50){
11             rectangle(x, y, x + 50, y + 50);
12         }
13     }
14     // 画3个色板
15     setfillcolor(RED);
16     fillrectangle(100, 300, 150, 350);
17     setfillcolor(BLUE);
18     fillrectangle(200, 300, 250, 350);
19     setfillcolor(GREEN);
20     fillrectangle(300, 300, 350, 350);
21 
22     MOUSEMSG m;
23     while (1){
24         m = GetMouseMsg();  // 获取鼠标信息
25         if (m.uMsg == WM_LBUTTONDOWN){    // 当鼠标左键击下 
26             if (m.x > 100 && m.x < 150 && m.y > 300 && m.y < 350){
27                 setfillcolor(RED);
28             }
29             if (m.x > 200 && m.x < 250 && m.y > 300 && m.y < 350){
30                 setfillcolor(BLUE);
31             }
32             if (m.x > 300 && m.x < 350 && m.y > 300 && m.y < 350){
33                 setfillcolor(GREEN);
34             }
35         }
36 
37         m = GetMouseMsg();
38 
39     M:    if (m.uMsg == WM_RBUTTONDOWN){   // 获取鼠标右键的信息
40             int i, j;
41             i = (int)(m.x / 50);
42             j = (int)(m.y / 50);
43             // 当鼠标右键点击的位子不在方格内则重新获取鼠标信息
44             if (i * 50 > 450 || j * 50 > 150){  
45                 goto M;
46             }
47             // 画鼠标右键点击的格子变为相应的颜色
48             fillrectangle(i * 50, j * 50, i * 50 + 50, j * 50 + 50);   
49         }
50     }
51     closegraph();
52 }

// 鼠标消息的结构

struct MOUSEMSG
{
    UINT uMsg;      // 当前鼠标消息
    bool mkCtrl;    // Ctrl 键是否按下
    bool mkShift;   // Shift 键是否按下
    bool mkLButton; // 鼠标左键是否按下
    bool mkMButton; // 鼠标中键是否按下
    bool mkRButton; // 鼠标右键是否按下
    int x;          // 当前鼠标 x 坐标
    int y;          // 当前鼠标 y 坐标
    int wheel;      // 鼠标滚轮滚动值
};

其中,当前鼠标消息可能是以下值:
WM_MOUSEMOVE     鼠标移动消息
WM_MOUSEWHEEL    鼠标滚轮拨动消息
WM_LBUTTONDOWN   左键按下消息
WM_LBUTTONUP     左键弹起消息
WM_LBUTTONDBLCLK 左键双击消息
WM_MBUTTONDOWN   中键按下消息
WM_MBUTTONUP     中键弹起消息
WM_MBUTTONDBLCLK 中键双击消息
WM_RBUTTONDOWN   右键按下消息
WM_RBUTTONUP     右键弹起消息
WM_RBUTTONDBLCLK 右键双击消息

猜你喜欢

转载自www.cnblogs.com/hxf-zb/p/9815711.html