#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="HELLOWORLD";

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInsance, LPSTR lpszCmdParam, int nCmdShow){
  /*HINSTANCE hInstance  - 프로그램 핸들
  *HINSTANCE hPrevInstance - 바로 앞에 실행된 현재 프로그램의 인스턴스 핸들, 없을 경우 NULL, WIN32에서는 항상 NULL
  *LPSTR lpszCmdLine - 명령행으로 입력된 프로그램 인수. 도스의 argv에 해당.
  *int nCmdShow - 프로그램이 실행될 형태이며, 보통모양 등이 전달된다.
  */
 HWND hWnd;
 MSG Message;
 WNDCLASS WndClass;
 g_hInst = hInstance; //Instance 날아가서 나중을 위해 저장

 WndClass.cbClsExtra=0; //예약 영역
 WndClass.cbWndExtra=0; //예약영역
 WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //윈도우의 배경 색상 GetStockObject라는 함수 이용 WHITE_BRUSH가 보통 쓰임.
 WndClass.hCursor=LoadCursor(NULL, IDC_ARROW); //커서 디폴트
 WndClass.hIcon=LoadIcon(NULL, IDI_APPLICATION); //아이콘 디폴트(창모양)
 WndClass.hInstance=hInstance; //클래스를 사용하는 프로그램의 번호 인수로 전달된 값 그대로 hInstance
 WndClass.lpfnWndProc=(WNDPROC)WndProc; //윈도우의 메시지 처리 함수를 지정.
 WndClass.lpszClassName=lpszClass; //윈도우 클래스의 이름을 정한다.
 WndClass.lpszMenuName=NULL; //프로그램이 사용할 메뉴. 메뉴는 프로그램 코드에서 만드는 것이 아니라 리소스 에디터에 의해 별도로 만들어진 후 링크시에 같이 합쳐진다. 메뉴사용안하면 NULL로.
 WndClass.style=CS_HREDRAW | CS_VREDRAW; //윈도우의 스타일. 수직,수평 크기 바꾸면 다시 그림. HORIZON,VERTICAL REDRAW
 RegisterClass(&WndClass);
 
 hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,NULL);
                  //ClassName,WindowName,dwStyle,      X,  Y,  WIDTH,  HEIGHT,                hWndParent, hMenu, hInstance, lpvParm

 ShowWindow(hWnd,nCmdShow);
 while(GetMessage(&Message,0,0,0)){ //FALSE 가 아닐때까지 계속 돔.
  TranslateMessage(&Message); //키보드에서 받은 메세지 번역.
  DispatchMessage(&Message); //처리해 달라.
 }
 return Message.wParam; //WM_QUIT 메시지로부터 전달된 탈출 코드.
}
                        //핸들       어떤 종류의 메시지인가.         
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));
 //DefWindowProc 함수는 위에서 처리해주지 않는 나머지 메시지에 대해 관한 처리를 해준다.
}


 

Posted by Triton
,