Hacking Arts
WinMain - 1.윈도우 클래스 만들기 본문
-윈도우 클래스 만들기
이전에 설명한 윈도우 클래스 4단계 중 첫번째 단계이다. 윈도우 클래스를 만들때는 일단 WNDCLASS라는 구조체를 선언하고 내용을 추가 해준다음 RegisterClass라는 함수를 이용하여 구조체를 등록해준다. 이러면 과정은 끝이난다.아래는 WNDCLASS 구조체 내용이다. 전부 채워주면 된다.
typedef struct tagWNDCLASSW
{
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCWSTR lpszMenuName;
LPCWSTR lpszClassName;
} WNDCLASS;
이 아래는 실제 코드이다.
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
WndClass.cbClsExtra = 0; //클래스 여분 바이트수
WndClass.cbWndExtra = 0; //윈도우 여분 바이트수
WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //윈도우의 배경색
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); //프로그램에서 사용할 커서
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //프로그램에서 사용할 아이콘
WndClass.hInstance = hInstance; //프로그램의 인스턴스 핸들
WndClass.lpfnWndProc = (WNDPROC)WndProc; //프로시져 함수명
WndClass.lpszClassName = lpszClass; //구조체로 만들어질 클래스명
WndClass.lpszMenuName = NULL; //프로그램에서 사용할 메뉴
WndClass.style = CS_HREDRAW | CS_VREDRAW; //윈도우 스타일
RegisterClass(&WndClass);
}
이런식으로 하면 된다.
마지막에 RegisterClass에게 구조체를 알려주면 등록되게 되는 것이다.
그리고 구조체로 만들어질 클래스명에 lpszClass는 LPWSTR lpszClass = L"ApiBase"; 이런식으로 전역변수로 선언하여 지정했다.
이렇게 되면
class ApiBase
{
...
}
이런식으로 클래스의 형태가 될 것이다.
이렇게 하면 첫번째 단계가 끝이난다. -참고 도서
API Programing / 이창현 / 혜지원
'Programing > API Programing' 카테고리의 다른 글
| WndProc - 메시지 처리하기 (0) | 2014.09.20 |
|---|---|
| WinMain - 4.메시지 루프 돌리기 (0) | 2014.09.20 |
| WinMain - 3.윈도우 객체 화면에 띄우기 (0) | 2014.09.19 |
| WinMain - 2.윈도우 객체 생성하기 (0) | 2014.09.19 |
| WinMain() 과 WndProc() (0) | 2014.09.19 |