#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[]=TEXT("HelloWin");
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 = szAppName;
if(!RegisterClass (&wndclass))//프로그램의 윈도우를 위한 윈도우 클래스를 등록
{
MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName,MB_ICONERROR);
//메시지 상자를 표시한다
return 0;
}
hwnd = CreateWindow(szAppName,TEXT("The Hello Program"), WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
//윈도우 클래스를 기반으로 윈도우를 생성한다.
//szAppName 윈도우 클래스 이름
//윈도우 캡션
//윈도우 스타일
//초기 x위치 , 초기 y 위치, 초기 x크기, 초기 y크기
//부모 윈도우 핸들
//윈도우 메뉴 핸들
//프로그램 인스턴스 핸들
//생성 매개변수
ShowWindow(hwnd, iCmdShow);// 윈도우를 화면에 표시한다.
UpdateWindow(hwnd);// 윈도우가 자기 자신을 그리도록(paint) 명령한다.
while(GetMessage(&msg,NULL, 0,0))// 메시지 큐에서 메시지를 얻는다.
{
TranslateMessage(&msg);//일부 키보드 메시지를 보낸다
DispatchMessage(&msg);// 윈도우 프로시저에 메시지를 보낸다
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(message)
{
case WM_CREATE:
PlaySound (TEXT("hellowin.wav"),NULL,SND_FILENAME | SND_ASYNC);// 사운드 파일을 재생한다
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);// 윈도우 그리기 시작을 알린다(window painting)
GetClientRect(hwnd, &rect);// 윈도우의 클라이언트 영역 치수(dimension)를 얻는다
DrawText(hdc,TEXT("Hello, Windows!"), - 1,&rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);//윈도우 그리기를 종료한다.
PlaySound (TEXT("hellowin.wav"),NULL,SND_FILENAME | SND_ASYNC);
return 0;
case WM_DESTROY:
PostQuitMessage(0);// 메시지 큐에 종료 메시지를 삽입한다.
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);// 메시지에 대한 디폴트 처리를 담당한다
}
'dev, tech > Windows P' 카테고리의 다른 글
DC (Device Context) 와 HANDLE (핸들) (0) | 2007.01.24 |
---|---|
WinMain 에서 하는 일... (0) | 2006.03.04 |
유니코드(Uncode) (0) | 2006.02.13 |
Windows 서비스 (0) | 2006.01.25 |
일단 용어 정리 (0) | 2006.01.19 |
댓글