<aside> 💡
HWND과 HINSTANCE는 다른 개념
</aside>
핸들
HWND
HINSTANCE
WinMain에서 첫 번째 매개변수로 전달받음int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
// hInstance를 제외한 나머지 매개변수들은 중요하지 않음
/*
여기서 전달받은 hInstance를 InitInstance (hInstance, nCmdShow) 함수에서
전역변수 hInst에 저장
*/
hInst = hInstance; // Store instance handle in our global variable
Window 클래스
WNDCLASSEX 구조체에 값을 채워 넣어 윈도우를 설정가능RegisterClassEx 함수를 통해 생성한 Window클래스를 등록CreateWindow 함수로 윈도우 생성가능TranslateMessage 공식문서 https://learn.microsoft.com/ko-kr/windows/win32/api/winuser/nf-winuser-translatemessage
WM_CHAR 공식문서 https://learn.microsoft.com/ko-kr/windows/win32/inputdev/wm-char
메세지 루프
TranslateMessage 함수를 호출해야함TranslateMessage 는 가상 키 메세지를 문자 메세지(WM_CHAR)로 변환하는 윈도우 함수DispatchMessage 함수를 통해 WinProc 함수로 보내짐WM_QUIT 메세지를 받을 때까지 루프를 반복수행가상 키코드
WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP 등WM_CHAR
<aside> 💡
게임의 메세지 루프 안에서는 GetMessage말고 PeekMessage를 사용해야함
GetMessage는 Blocking함수로 리턴되기전에 메세지를 기다림
PeekMessage는 Non-Blocking함수로 기다리지 않음
</aside>