#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HINSTANCE g_hInst;
// 윈도우 이름 및 타이틀바에 등록할 문자열
LPCTSTR lpszClass = TEXT("First");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst = hInstance;
//----- 아래 부분은 윈도우 클래스를 설정해주는 것이다. -----
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;
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);
// 생성한 윈도우를 출력..(이 함수를 호출하지않으면 윈도우가 보이지 않는다.)
ShowWindow(hWnd, nCmdShow);
// 사용자가 종료하기 전까지 반복해서 메세지 처리를 호출한다.
while (GetMessage(&Message, NULL, 0, 0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
// 여기서 실제로 메시지를 처리한다.
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
switch (iMessage)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
// 프로그래머가 처리하지 않은 나머지 동작을 기본처리로 넘긴다.
return DefWindowProc(hWnd, iMessage, wParam, lParam);
}
오늘은 두번째 수업 시간이다.