* 검색되게 하기 위해 일반 형식에 저장
//레지스터에 등록할 윈도우 클래스 구조체를 만들어준다.
WNDCLASSEXW wcex;
//wcex의 사이즈를 저장. 존재이유는 잘 모름.
wcex.cbSize = sizeof(WNDCLASSEX);
//▼ 아래에 윈도우가 어떤 형태의 윈도우를 생성할지를 설정할 수 있다.
wcex.style = CS_HREDRAW | CS_VREDRAW;
//CS_HREDRAW: Horizontal Redraw | CS_VREDRAW Vertical Redraw
//가로세로 영역 크기가 바뀌었을 때 클라이언트 영역을 전부 다시 그려주는 기능
//WndProc(Window Procedure) 전역함수 -> 함수 포인터
//이벤트 -> 메시지 -> 메시지 큐 -> 메시지를 인자로 집어넣어서 처리해줄 함수를 지정
//메시지 큐에서 꺼내온 메시지를 인자로 전달하며 호출할 함수의 함수 주소를 등록한다.
//이런 식으로 함수 포인터를 등록해놓고 호출하는 방식을 '콜백'이라고 한다.
//WndProc은 전역 함수 포인터이다.
//멤버 함수 포인터와 전역 함수 포인터는 모양새가 다르다.
//전역 함수 포인터를 생성하려면 static 함수를 만들면 된다.
wcex.lpfnWndProc = WndProc;
//예약용(안쓰이지만 값 설정은 해 줘야됨.)
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
//윈도우 인스턴스를 등록한다.
wcex.hInstance = m_hInst;
/* 왼쪽 위에 뜨는 메뉴를 지정. nullptr을 등록하면 메뉴가 뜨지 않음.
게임을 만들 떄는 메뉴를 쓰지 않으므로 nullptr을 많이 씀
일단 사전 생성되어 있는 아이콘을 쓰고 싶으면
리소스 파일 우클릭 -> 추가 -> 리소스 -> icon
위 방법으로 아이콘을 생성하면,
resource.h라는 헤더가 생성되고
해당 파일을 확인하면 아이콘이 번호로
define 되어 있는 것을 확인할 수 있다.
해당 번호를 사용하면 됨(resource.h include 시킬것 */
//실행파일에 뜨는 아이콘
wcex.hIcon = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_ICON1));
//윈도우 창 왼쪽 위에 뜨는 작은 아이콘
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_ICON1));
//커서 변경. ex)IDC_WAIT: 대기
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
//배경화면
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
//메뉴를 사용할지 말지를 결정한다.
//게임에서는 메뉴가 일반적으로 필요 없으므로 nullptr`
wcex.lpszMenuName = nullptr;
/*
* 기본 설정은 프로젝트 '리소스 파일' 안의 StringTable에 들어있는 데이터를
불러와서 이름을 지정해주지만, 굳이 그렇게 할 필요 없이 여바로 지정해주어도 된다.
* 등록할 클래스의 이름을 유니코드 문자열로 만들어서 지정한다.
유니코드 형태의 문자열로 설정하려면 L"(문자열)" 형식으로 하면 된다.
* 하지만 TEXT("문자열")로 하는 것이 더 좋다.
TEXT 매크로는 프로젝트 설정이 유니코드로 되어있을 경우 유니코드 문자열로 만들어지고
멀티바이트로 되어있을 경우 멀티바이트 문자열로 만들어지게 된다.
*/
//wcex.lpszClassName = szWindowClass;
wcex.lpszClassName = TEXT("GameFramework");
//여기까지 했으면 등록은 전부 완료.
RegisterClassExW(&wcex);
'WIN32API FrameWork > 코드별 설명 개별저장(검색용)' 카테고리의 다른 글
ShowWindow (0) | 2022.05.03 |
---|---|
RECT 구조체 , AdjustWindowRect , MoveWindow (0) | 2022.05.03 |
hWnd = CreateWindowW (0) | 2022.05.03 |
TranslateMessage(&msg), DispatchMessage(&msg) (0) | 2022.05.03 |
GetMessage , PeekMessage (0) | 2022.05.03 |