개성파 블로그

C언어 콘솔로 마우스 이벤트 처리하기 본문

컴퓨터

C언어 콘솔로 마우스 이벤트 처리하기

TWorld 2014. 1. 26. 00:34

C언어에서 마우스 사용하기!


Colored By Color Scripter

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.c



우선 저는 MouseClick이라는 함수는 정의하였습니다. 이 함수는 단순히 콘솔 상에서 마우스를 클릭한 지점의 x와 y의 값을 구하는 함수입니다.


이 함수는 오직 마우스로 좌표값만 구하는 목적으로 하였기 때문에 종료를 하고 싶어도 할 수 없습니다. 그래서 main함수에 "끝내기"라는 문자열을 적고 그 문자열 좌표에 클릭하면 종료하게끔 만들었습니다.(30, 34~36줄)


문자열 "끝내기"는 처음 콘솔 화면인 (0, 0)에서 시작하고 문자열 길이가 6개라서 x는 0~5, y는 0입니다.


turboc헤더파일과 gotoxy함수가 무엇인지 모르겠으면 아래를 링크를 클릭하세요.




Comments