#include <windows.h>
#include <TCHAR.H>
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
//프로그램에 커널이 부여하는 ID, 이전에 부여받은 값(사용x), 문자열, 윈도우가 화면에 출력될 때 형태를 정의
{
HWND hwnd;
MSG msg;
WNDCLASS WndClass;
WndClass.style = CS_HREDRAW | CS_VREDRAW; //윈도우가 출력되는 형태 (윈도우의 크기를 변경하면 다시 그리는 형태의 윈도우)
WndClass.lpfnWndProc = WndProc; //메시지 처리에 사용될 함수의 이름 기재
WndClass.cbClsExtra = 0; // 클래스를 위한 여분의 메모리 크기
WndClass.cbWndExtra = 0; // 윈도우를 위한 여분의 메모리 크기
WndClass.hInstance = hInstance; //첫번째 매개변수
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //기본 아이콘 지정
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); //기본 커서 지정
WndClass.hbrBackground(HBRUSH)GetStockObject(WHITE_BRUSH); //윈도우 배경색 지정
WndClass.lpszMenuName = NULL; // 메뉴 이름
WndClass.lpszClassName = _T("Window Class Name"); // 윈도우 클래스의 이름
RegisterClass(&WndClass); // 커널에 등록
hwnd = CreateWindow(_T("Window Class Name"), // 윈도우 핸들값 반환, 윈도우 클래스 이름
_T("Window Title Name"), // 윈도우 타이틀 이름
WS_OVERLAPPENDWINDOW, // 윈도우 스타일 (기본적인 윈도우)
CW_USEDEFAULT, // 윈도우 위치 x 좌표
CW_USEDEFAULT, // 윈도우 위치 y 좌표
CW_USEDEFAULT, // 윈도우 가로 크기
CW_USEDEFAULT, // 윈도우 세로 크기
NULL, // 부모 윈도우 핸들
NULL, // 메뉴 핸들
hInstance, // 응용 프로그램 인스턴스
NULL // 생성 윈도우 정보
);
ShowWindow(hwnd, nCmdShow); // 윈도우를 화면에 보여준다
UpdateWindow(hwnd); // 윈도우를 화면에 보여준다
while(GetMessage(&msg, NULL, 0, 0)) //메시지 큐에서 메시지를 꺼낸다
{
TranslateMessage(&msg); // 두 메시지를 하나로 변형할 때 이용
DispatchMessage(&msg); // 메시지를 처리하는 함수에 메시지를 보낸다
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
// 생성된 윈도우의 핸들 값, 메시지 번호, 메시지 종류에 따라 값을 해석하는 방법이 다르다.
{
HDC hdc;
PAINTSTRUCT ps;
switch(iMsg)
{
case WM_CREATE:
break;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
break;
case WM_DESTORY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam); // 메시지 중 윈도우 메시지 처리 함수에서 처리하지 않은 것을 기본 메시지 처리함수에서 담당하도록 한다.
}
'삽질의 현장 > - 윈도우 API' 카테고리의 다른 글
#003_WIndow_API_WinMain, WndProc에 대해서 (2) (0) | 2015.09.08 |
---|---|
#002_WIndow_API_WinMain, WndProc에 대해서 (1) (0) | 2015.09.08 |
#001_WIndow_API_Intro (0) | 2015.09.07 |
[삽잡이::Window] Window? 창문이냐? 미안하다! (0) | 2015.06.09 |
[삽잡이::Window] 우리의 진정한 친구 OS (0) | 2015.06.09 |