컴퓨터 주변기기들은 연결시킬 때 주변기기 인식은 OS가 한다.

주변기기들에 대한 정보들이 OS로 보내지고 OS는 정보를 메시지(값)로 가공한다.

이를 해당 응용 프로그램에 보내주거나 가져오는 것을 반복하는 것이다.

 

 

1) 키보드

※ 문자 키에 발생하는 메시지 --> 키보드가 눌렸구나

WM_CHAR

 

※ 대소문자 구분 방법 --> 어떤 문자일까?

wParam(WndProc 매개변수) : 아스키 코드 값

 

WndProc에 다음과 같은 코드 추가
키보드 입력 시 화면

 

※ 모든 키에 대해 발생하는 메시지

WM_KEYDOWN

 

※ 키 구분 방법

wParam : 가상 키 코드. 문자는 대문자로만 인식함!

 

- 가상 키코드?

   VK_LEFT, VK_HOME 등 '1','A' 문자 상수 사용

 

WM_KEYDOWN 메세지 코드
왼쪽 키 누를 시
F1 키 누를 시

 

+ GetAsyncKeyState() 

:: 실시간으로 키 입력을 체크

메세지 큐에 저장되는 키 메세지의 단점을 보완

키 눌림이 있으면 음수값 리턴

- 게임이나 시뮬레이션 등에 사용됨

SHORT GetAsyncKeyState(int vKey);

- 사용 예시

if (GetAsyncKeyState(VK_F1) < 0 ) { 코드 입력 };

 


2) 마우스

:: 키보드와 같은 방식

 

※ 마우스 메세지 WM_MOUSEMOVE

:: 마우스 이동 시 발생

 

- 마우스 위치 정보 

LOWORD(lParam) → x 좌표

HIWORD(lParam) → y 좌표

 

※ 그 외 마우스 메세지

WM_LBUTTONDOWN : 마우스 왼쪽 버튼 눌림

WM_LBUTTONUP : 마우스 왼쪽 버튼 놓임

WM_RBUTTONDOWN : 마우스 오른쪽 버튼 눌림

WM_RBUTTONUP : 마우스 오른쪽 버튼 놓임

 

 

WndProc에 마우스 관련 변수와 메세지 case
WM_PAINT에 추가

※ sprintf_s를 사용하기 위해서 C++ 코드 초반에 #include stdio.h 추가 해줘야함

 

 

결과

 

※ wParam으로 전달되는 코드

MK_LBUTTON, MK_MBUTTON, MK_RBUTTON, MK_CONTROL, MK_SHIFT

 

※ 드래그

WM_MOUSEMOVE + MK_LBUTTON

 

 

WM_MOUSEMOVE case 추가

먼저 WndProc 초반에 char string_drag[100]; 선언 후 case 문을 추가한다. 

그리고 WM_PAINT에 TextOut 문장을 추가한다.

 

결과

 

 

'Project > WIN32 API' 카테고리의 다른 글

컨트롤  (0) 2021.07.21
다이얼로그  (0) 2021.07.21
그래픽 오브젝트  (0) 2021.07.12
그래픽  (0) 2021.07.08
리소스  (0) 2021.07.07

+ Recent posts