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 |