1. 程式人生 > >控制檯上識別滑鼠點選位置座標

控制檯上識別滑鼠點選位置座標

#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;
		}
	}
}