CreateWindow

윈도우 클래스를 등록한 후에는 등록한 윈도우 클래스를 기본으로 윈도우를 실제 생성해야 한다.
윈도우를 생성할 때는 CreateWindow 함수를 사용한다.

HWND CreateWindow( lpszClassName, lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, hmenu, hinst, lpvParam )

lpszClassName
생성하고자 하는 윈도우의 클래스를 지정하는 문자열이다.
WndClass 구조체의 lpszClassName 멤버의 이름을 여기에 기입한다.

lpszWindowName
윈도우의 타이틀 바에 나타날 문자열이다.

dwStyle
만들고자 하는 윈도우의 형태를 지정하는 인수이다.
일종의 비트 필드값이며 매크로 상수들이 정의되어 있고, 이 상수들을 OR 연산자로 연결하여 윈도우의 다양한 형태를 지정한다.
WS_OVERLAPPEDWINDOW 를 사용하면 가장 기본적인 윈도우 설정 상태가 된다.
(시스템 메뉴, 최대 최소 버튼, 타이틀 바, 경계선을 가진 윈도우)

X, Y, nWidth, nHeight
윈도우의 위치와 크기를 지정하며 픽셀 단위를 사용한다.
x, y 좌표는 메인 윈도우의 경우 전체 화면을 기준으로 하며 자식 윈도우는 부모 윈도우의 좌상단을 기준으로 한다.
정수값을 바로 지정해도 되고, CW_USEDEFAULT를 사용하면 윈도우즈가 알아서 적당한 크기와 위치를 설정해 준다.

hWndParent
부모 윈도우가 있을 경우 부모 윈도우의 핸들을 지정해 준다.
윈도우끼리 상하관계(parent-child)를 지정해 주는 인수이다.
부모 윈도우가 없을 경우는 NULL로 지정한다.

hmenu
윈도우에서 사용할 메뉴의 핸들을 지정한다.
이 인수를 NULL로 지정하면 WndClass 에서 지정한 메뉴를 그대로 사용한다.

hinst
프로그램의 핸들을 지정한다.
WinMain의 인수로 전달된 hInstance를 대입한다.

lpvParam
CREATESTRUCT 구조체의 번지이며 특수한 목적에 사용횐다.
보통 NULL 값을 사용한다.

이 함수는 윈도우에 관한 모든 정보를 메모리에 만든 후 윈도우 핸들을 리턴값으로 넘겨준다.
넘겨지는 윈도우 핸들은 hWnd 라는 지역 변수에 저장되었다가 윈도우를 참조하는 모든 함수의 인수로 사용된다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,