본문 바로가기
dev, tech/Windows P

aa

by 구띵 2006. 2. 14.

사용자 삽입 이미지
 
 
 
 

#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

댓글