hyrule 2022. 5. 3. 15:03

* 1번 인자는 윈도우 클래스에 등록할 이름이다.

* 2번 인자는 타이틀바에 표시할 이름이다.
 - 1, 2번 인자의 기본값인 szWIndowClass와 szTitle 대신
 그냥 문자열을 넣어 생성해줄수도 있다.

* 3번 인자는 이 윈도우 창이 어떻게 생성될지를 결정하는 선택 인자이다.
 - 현재 인자를 WS_OVERLAPPEDWINDOW의 정의로 타고 들어가보면 여러가지 옵션
 조합되어 있는 것을 알 수 있다.

* 4, 5번 인자는 윈도우 창이 생설될 화면에서의 위치를 지정한다.
픽셀로 지정한다.
 - 예를 들어 1920, 1080 해상도라면 거기에서 원하는 값을 넣어주면
 해당 위치에 나오게 된다.
 - 4번은 가로좌표, 5번은 세로좌표.

* 6번, 7번 인자는 윈도우창의 가로, 세로의 크기를 지정한다.
픽셀단위로 지정을 해준다.
 - 이 값은 상단바까지 포함한 사이즈이므로
 실제 화면이 표시되는 영역은 여기에 인자로 지정해 준 범위보다 좁다.
 - 그러므로 여기서는 사이즈를 0으로 설정해 놓고
 실제 화면이 표시되는 값의 범위를 조절해 주는 함수인
 AdjustWindowRect() 함수를 이용해서 조절하는 것이 좋다.

* 8번 인자는 부모 윈도우가 있다면 부모 윈도우의 핸들을 지정한다.
없으면 nullptr을 지정한다.

* 9번 인자는 메뉴가 있다면 메뉴 핸들을 넣어주고 없으면 nullptr을 지정한다.
* 10번 인자는 윈도우 인스턴스를 지정하여 이 윈도우 인스턴스에 속한
윈도우 창을 만들어지게 된다.
* 11번 인자는 필요 없음.

* 이런 식으로 윈도우 창을 만들어주고 정상적으로 만들어졌다면
생성된 윈도우 창의 핸들을 반환해준다.
* HWND = Handle WiNdoW 윈도우 핸들

 

m_hWnd = CreateWindowW(TEXT("GameFramework"), TEXT("GameFramework"), WS_OVERLAPPEDWINDOW,
        100, 0, 0, 0, nullptr, nullptr, m_hInst, nullptr);

 

#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED: 일반적인 윈도우     | \
                                 WS_CAPTION: 창 이름 표시        | \
                                 WS_SYSMENU: 시스템 메뉴(창 닫기 등)        | \
                                 WS_THICKFRAME: 테두리     | \
                                 WS_MINIMIZEBOX: 최소화 가능    | \
                                 WS_MAXIMIZEBOX: 최대화 가능)
 #define WS_POPUPWINDOW      (WS_POPUP: MessageBox와 같은 팝업 창          | \
                             WS_BORDER         | \
                             WS_SYSMENU)