목록게임프로그래밍/Win32 API (6)
bdfgdfg
키보드 문자 키에 발생하는 메시지 - WM_CHAR -> 어떤 문자가 입력되었는지는 모름. 대소문자 구분 방법 wParam : 아스키 코드 값 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static wchar_t string[100]; static int index; switch (message) { case WM_CHAR: string[index] = (wchar_t)wParam; ++index; InvalidateRect(hWnd, NULL, true); break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); TextOut(..
그래픽 -GDI(Graphics Device Interface) - 운영체제의 한 부분으로 출력을 담당(Gdi.dll) DC의 개념과 역할 DC - DC는 출력하기 위한 장치(화면 프린터)의 특성을 저장하는 구조체 - 우리가 화면에 무언가를 출력하기 위해서는 DC를 사용해야한다. 우리의 프로그램은 DC를 통해서 작업을 하고 DC가 GDI(OS의 영역)에게 명령을 하는 구조. 쉽게 말해 화면이 출력되는 모든 무언가를 이 dc구조체를 사용해서 간편하게 출력할 수 있다. DC를 사용하는 그래픽 오브젝트 - 비트맵 브러쉬 펜 폰트 Path등.. DC의 데이터형 -> 핸들(HDC) 화면 DC에 관련된 함수 - BeginPaint(),EndPaint() // WM_PAINT 메시지 처리에서만 사용가능 - GetDC..
유니코드 유니코드는 한문자당 2바이트. winapi의 함수는 유니코드로 받는 함수가 많기에 문자나 문자열을 유니코드 자료형으로 사용하는게 좋다. ex) wchar_t, wstring 윈도우 구조체 윈메인 함수에서 처음에 레지스터클래스라는 함수를 통해 윈도우 클래스를 설정 및 등록한다. ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEXW wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.h..
PeekMessage와 GetMessage의 차이점 GetMessage는 메시지가 없으면 메시지가 올때까지 무한정 기다린다. 게임에서는 메시지처리가 따로없더라도 게임이 돌아가야하기 때문에 GetMessage를 사용하는것은 좋지않다. PeekMessage는 메시지가 있으면 true를 없다면 false를 매번 리턴한다. (물론 인자로 메시지의 주소를 전달하는것은 같다. 메시지가 존재한다면 msg구조체에 메시지를 저장) // 기본 메시지 루프입니다: while (loop) { if (PeekMessage(&msg,nullptr,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else // 윈도우 idle타임. { } } 이런식으로 wina..