控制檯上識別滑鼠點選位置座標
阿新 • • 發佈:2019-01-27
#include<windows.h> HANDLE hInput; /* 獲取標準輸入裝置控制代碼 */ INPUT_RECORD inRec;/* 返回資料記錄 */ DWORD numRead; /* 返回已讀取的記錄數 */ int Y,X;/* X和Y的座標 */ int input() { while(1){ COORD pos = {0,0}; ReadConsoleInput(hInput, &inRec, 1, &numRead); pos = inRec.Event.MouseEvent.dwMousePosition; Y=(int)pos.Y; X=(int)pos.X; if (inRec.EventType == MOUSE_EVENT && inRec.Event.MouseEvent.dwEventFlags == RIGHTMOST_BUTTON_PRESSED) /* 滑鼠左鍵雙擊 */ return 1; if (inRec.EventType == MOUSE_EVENT && inRec.Event.MouseEvent.dwButtonState == RIGHTMOST_BUTTON_PRESSED) /* 滑鼠右鍵單擊 */ return 2; if (inRec.EventType == MOUSE_EVENT && inRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) /* 滑鼠左鍵單擊 */ { if(X>1&&X<80&&Y==0) /* 第一行 */ return 3; else if(X>1&&X<80&&Y==1) /* 第二行 */ return 4; } } } void HideCursor()//隱藏控制檯的游標 { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } int main() { int rt; HideCursor(); //隱藏控制檯的游標 HWND hwnd=FindWindow(L"ConsoleWindowClass",NULL);/* 控制檯視窗控制代碼 */ hInput = GetStdHandle(STD_INPUT_HANDLE); /* 輸入裝置控制代碼 */ while(1){ ReadConsoleInput(hInput, &inRec, 1, &numRead); /* 讀取1個輸入事件 */ switch(inRec.EventType) { case MOUSE_EVENT:{ rt=input(); switch(rt) { case 1: MessageBox(hwnd,L"雙擊操作",L"111",0); break; case 2: MessageBox(hwnd,L"右鍵單擊",L"222",0); break; case 3: MessageBox(hwnd,L"左鍵單擊第一行",L"333",0); break; case 4: MessageBox(hwnd,L"左鍵單擊第二行",L"444",0); break; } } break; } } }