1. 程式人生 > >簡單的鼠標操作<一個填充格子的小遊戲>

簡單的鼠標操作<一個填充格子的小遊戲>

time n) wheel 滾輪 use font get llc 獲取

 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 右鍵雙擊消息

簡單的鼠標操作<一個填充格子的小遊戲>