개성파 블로그
C언어 콘솔로 마우스 이벤트 처리하기 본문
C언어에서 마우스 사용하기!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <turboc.h> void MouseClick(int *x, int *y) { HANDLE hIn, hOut; DWORD dwNOER; INPUT_RECORD rec; hIn=GetStdHandle(STD_INPUT_HANDLE); hOut=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleMode(hIn, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT); while( TRUE ){ ReadConsoleInput(hIn,&rec,1,&dwNOER); if( rec.EventType == MOUSE_EVENT ){ if( rec.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED ){ *x = rec.Event.MouseEvent.dwMousePosition.X; *y = rec.Event.MouseEvent.dwMousePosition.Y; return; } } } } int main() { int x, y; printf("끝내기"); while( 1 ){ MouseClick(&x, &y); if( y == 0 ){ if( x < 6 ) break; } gotoxy(0, 1); printf("%2d, %2d\n", x, y); } } |
우선 저는 MouseClick이라는 함수는 정의하였습니다. 이 함수는 단순히 콘솔 상에서 마우스를 클릭한 지점의 x와 y의 값을 구하는 함수입니다.
이 함수는 오직 마우스로 좌표값만 구하는 목적으로 하였기 때문에 종료를 하고 싶어도 할 수 없습니다. 그래서 main함수에 "끝내기"라는 문자열을 적고 그 문자열 좌표에 클릭하면 종료하게끔 만들었습니다.(30, 34~36줄)
문자열 "끝내기"는 처음 콘솔 화면인 (0, 0)에서 시작하고 문자열 길이가 6개라서 x는 0~5, y는 0입니다.
turboc헤더파일과 gotoxy함수가 무엇인지 모르겠으면 아래를 링크를 클릭하세요.
Comments