typedef struct tagWNDCLASSW {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCWSTR lpszMenuName;
LPCWSTR lpszClassName;
} WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
typedef WNDCLASSW WNDCLASS;
int APIENTRY WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance
, _In_ LPSTR lpszCmdParam, _In_ int nCmdShow)
{
WNDCLASS WndClass;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
//WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // 메인화면.
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hInstance = hInstance;
WndClass.lpfnWndProc = WndProc;
WndClass.lpszClassName = lpszClass;
WndClass.lpszMenuName = NULL;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, (HMENU)NULL, hInstance, NULL);
//... 생략
}
WNDCLASS WndClass;
: WNDCLASS 구조체의 인스턴스인 WndClass를 선언합니다. 이 구조체는 윈도우 클래스를 정의하는 데 사용됩니다.
WndClass.cbClsExtra = 0;
: 클래스의 여분의 메모리(Extra Class Memory) 크기를 지정합니다. 현재는 사용하지 않으므로 0으로 설정합니다.
WndClass.cbWndExtra = 0;
: 윈도우 인스턴스의 여분의 메모리(Extra Window Memory) 크기를 지정합니다. 현재는 사용하지 않으므로 0으로 설정합니다.
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
: 윈도우의 배경색을 설정합니다. 여기서는 COLOR_WINDOW를 기반으로 한 특정 브러시를 사용하여 메인 화면의 배경을 지정합니다.
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
: 윈도우에 사용될 커서를 지정합니다. 여기서는 기본 화살표 커서를 사용합니다.
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
: 윈도우의 아이콘을 설정합니다. 여기서는 기본 응용 프로그램 아이콘을 사용합니다.
WndClass.hInstance = hInstance;
: 현재 실행 중인 인스턴스의 핸들을 지정합니다. 일반적으로 윈도우를 생성하는 응용 프로그램의 인스턴스 핸들이 여기에 사용됩니다.
WndClass.lpfnWndProc = WndProc;
: 윈도우 프로시저의 포인터를 지정합니다. WndProc 함수는 윈도우 이벤트를 처리하는 함수로 사용됩니다.
WndClass.lpszClassName = lpszClass;
: 윈도우 클래스의 이름을 설정합니다. lpszClass는 미리 정의된 문자열로 클래스의 고유한 이름을 나타냅니다.
WndClass.lpszMenuName = NULL;
: 윈도우 클래스에 연결된 메뉴의 이름을 설정합니다. 여기서는 메뉴를 사용하지 않으므로 NULL로 설정합니다.
WndClass.style = CS_HREDRAW | CS_VREDRAW;
: 윈도우 클래스의 스타일을 설정합니다. 여기서는 가로 및 세로 크기가 변경될 때 다시 그리도록 하는 스타일을 설정합니다.
RegisterClass(&WndClass);
: 앞서 정의한 윈도우 클래스를 등록합니다. 등록된 클래스를 기반으로 윈도우 인스턴스를 생성할 수 있습니다.
CreateWindow
: 생성된 윈도우 클래스를 이용하여 윈도우를 생성합니다.