Window Class
WinMain 함수에서 하는 가장 중요한 일은 윈도우를 만드는 일이다.
윈도우를 만들려면 윈도우 클래스를 먼저 등록한 후 CreateWindow 함수를 호출해야 한다.
윈도우 클래스는 만들어질 윈도우의 여러가지 특성을 정의한다.
윈도우 클래스는 windows.h 에 다음과 같이 정의되어 있는 구조체이다.
style
윈도우의 스타일을 정의한다.
가장 많이 사용하는 값으로 CS_HREDRAW 와 CS_VREDRAW 가 있다.
이 두 값을 OR 연산자(|)로 연결하여 사용한다.
이 값들은 윈도우의 수직(또는 수평) 크기가 변할 경우 윈도우를 다시 그린다.
lpfnWndProc
윈도우의 메시지 처리 함수를 지정한다.
메시지 처리 함수의 이름은 거의 WndProc 로 정해져 있는 편이다.
cbClsExtra cbWndExtra
일종의 예약 영역으로, 윈도우즈가 내부적 또는 아주 특수한 목적에 사용되는 여분의 공간이다.
이 예약 영역을 사용하지 않을 경우는 0으로 지정한다.
hInstance
이 윈도우 클래스를 사용하는 프로그램의 번호이며 이 값은 WinMain의 인수로 전달된 hInstance 값을 그대로 대입해 주면 된다.
hIcon hCurcor
이 윈도우가 사용할 마우스 커서와 최소화되었을 경우에 출력될 아이콘을 지정한다.
LoadCursor 함수와 LoadIcon 함수를 사용하여 지정한다.
hbrBackground
윈도우의 배경 색상을 지정한다.
GetStockObject 라는 함수를 사용하여 윈도우에서 기본적으로 제공하는 브러시를 지정한다.
일반적으로 흰색 배경(WHITE_BRUSH)이 많이 사용된다.
lpszMenuName
이 프로그램이 사용할 메뉴를 지정한다.
메뉴는 프로그램 코드에서 리소스 에디터에 의해 별도로 만들어진 후 링크시에 같이 합쳐진다.
메뉴를 사용하지 않을 경우 이 멤버에 NULL 을 대입해주면 된다.
lpszClassName
윈도우 클래스의 이름을 정의한다.
여기서 지정한 이름은 CreateWindow 함수에 전달되며, CreateWindow 함수는 윈도우 클래스에서 정의한 특정값을 참조하여 윈도우를 만든다.
윈도우 클래스의 이름은 보통 실행 파일의 이름과 일치시켜 작성한다.
WinMain 함수에서 하는 가장 중요한 일은 윈도우를 만드는 일이다.
윈도우를 만들려면 윈도우 클래스를 먼저 등록한 후 CreateWindow 함수를 호출해야 한다.
윈도우 클래스는 만들어질 윈도우의 여러가지 특성을 정의한다.
윈도우 클래스는 windows.h 에 다음과 같이 정의되어 있는 구조체이다.
typedef struct tagWNDCLASS
{
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
} WNDCLASS;
{
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
} WNDCLASS;
style
윈도우의 스타일을 정의한다.
가장 많이 사용하는 값으로 CS_HREDRAW 와 CS_VREDRAW 가 있다.
이 두 값을 OR 연산자(|)로 연결하여 사용한다.
이 값들은 윈도우의 수직(또는 수평) 크기가 변할 경우 윈도우를 다시 그린다.
lpfnWndProc
윈도우의 메시지 처리 함수를 지정한다.
메시지 처리 함수의 이름은 거의 WndProc 로 정해져 있는 편이다.
cbClsExtra cbWndExtra
일종의 예약 영역으로, 윈도우즈가 내부적 또는 아주 특수한 목적에 사용되는 여분의 공간이다.
이 예약 영역을 사용하지 않을 경우는 0으로 지정한다.
hInstance
이 윈도우 클래스를 사용하는 프로그램의 번호이며 이 값은 WinMain의 인수로 전달된 hInstance 값을 그대로 대입해 주면 된다.
hIcon hCurcor
이 윈도우가 사용할 마우스 커서와 최소화되었을 경우에 출력될 아이콘을 지정한다.
LoadCursor 함수와 LoadIcon 함수를 사용하여 지정한다.
hbrBackground
윈도우의 배경 색상을 지정한다.
GetStockObject 라는 함수를 사용하여 윈도우에서 기본적으로 제공하는 브러시를 지정한다.
일반적으로 흰색 배경(WHITE_BRUSH)이 많이 사용된다.
lpszMenuName
이 프로그램이 사용할 메뉴를 지정한다.
메뉴는 프로그램 코드에서 리소스 에디터에 의해 별도로 만들어진 후 링크시에 같이 합쳐진다.
메뉴를 사용하지 않을 경우 이 멤버에 NULL 을 대입해주면 된다.
lpszClassName
윈도우 클래스의 이름을 정의한다.
여기서 지정한 이름은 CreateWindow 함수에 전달되며, CreateWindow 함수는 윈도우 클래스에서 정의한 특정값을 참조하여 윈도우를 만든다.
윈도우 클래스의 이름은 보통 실행 파일의 이름과 일치시켜 작성한다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,