본문 바로가기

Programming Tips/MFC

마우스 이벤트 관련 함수 정리


마우스 이벤트와 관련된 함수로 아래와 같은 것들이 있습니다.

◎ GetCursorPos
    현재 마우스 커서의 위치를 얻어주는 함수이며 원형은 아래와 같습니다.
    GetCursorPos(LPPOINT lpPoint)
    CPoint 형으로 변수를 하나 선언하고 그 주소를 인자로 넣어주면 마우스 커서의 x, y 좌표를 변수에 담
    아줍니다.
   
◎ SetCursorPos
    마우스 커서를 X, Y의 위치로 이동시키는 함수이며 원형은 아래와 같습니다.
    SetCursorPos(int X, int Y)
    인자로 넣는 x, y 좌표의 위치로 마우스 커서를 이동시켜줍니다.

◎ mouse_event
    마우스와 관련된 여러가지 이벤트를 발생시키는 함수입니다. 원형은 아래와 같습니다.
    mouse_event( DWORD dwFlags, DWORD dx, DWORD dy, DWORD dwData, DWORD dwExtraInfo)

    dwFlags의 값에 따라서 이벤트를 구분하며 아래에 정리된 인자를 사용하여 원하는 이벤트를 발생시
    키면 됩니다.

    MOUSEEVENTF_MOVE              - mouse move
    MOUSEEVENTF_LEFTDOWN      - left button down
    MOUSEEVENTF_LEFTUP           - left button up
    MOUSEEVENTF_RIGHTDOWN    - right button down
    MOUSEEVENTF_RIGHTUP         - right button up
    MOUSEEVENTF_MIDDLEDOWN  - middle button down
    MOUSEEVENTF_MIDDLEUP       - middle button up
    MOUSEEVENTF_WHEEL            - wheel button rolled
    MOUSEEVENTF_ABSOLUTE       - absolute move

    dx, dy는 각각 마우스 커서의 위치를 나타내며 dwData는 dwFlags가 MOUSEEVENTF_WHEEL 일 때
    의 무브먼트 값이며, dwFlags가 MOUSEEVENTF_WHEEL이 아닐 때는 0입니다.


◎  위의 함수들을 이용한 간단한 예제. (x, y에 이벤트가 발생할 마우스 좌표를 넣어서 사용)
  - Mouse Drag
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
setcursorpos(x, y);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

  - Mouse Right Button Click
setcursorpos(x, y);
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);

  - Mouse Left Button Double Click
setcursorpos(x, y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);