본문 바로가기

프로그래밍/API

API 기본 소스

#include <windows.h>   //wndows.h include

 


//전역변수

HINSTANCE g_hInst;      //전역 인스턴스의 핸들선언
LPCTSTR lpszClass = TEXT("WinMain");
HWND  g_hWnd;       //윈도우의 핸들


 

//함수 프로토타입
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


//윈도우 메인 함수
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance
    ,LPSTR lpszCmdParam, int nCmdShow)
{
 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)WndProc;      //윈도우 프로시저의 이름
 WndClass.lpszClassName = lpszClass;       //윈도우 클래스의 이름
 WndClass.lpszMenuName = NULL;         //메뉴의 이름
 WndClass.style   = CS_HREDRAW | CS_VREDRAW;    //윈도우의 스타일
 RegisterClass(&WndClass);          //클래스를 등록한다

 

 //윈도우를 만든다
 g_hWnd = CreateWindow(lpszClass,lpszClass, WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  NULL, (HMENU)NULL, hInstance, NULL);
 ShowWindow(g_hWnd, nCmdShow);

 


/*
 while(true)
 {
  /// 메시지큐에 메시지가 있으면 메시지 처리
  if( PeekMessage( &Message, NULL, 0U, 0U, PM_REMOVE ) )
  {
   if(Message.message == WM_QUIT) break;
   TranslateMessage( &Message );
   DispatchMessage( &Message );
  }
  /// 처리할 메시지가 없으면 Render()함수 호출
  // Render();
 }
*/

 //메세지 루프
 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)
{
 HDC   hdc;
 PAINTSTRUCT ps;

 switch(iMessage)
 {
  case WM_PAINT:
  hdc = BeginPaint(hWnd, &ps);

  EndPaint(hWnd, &ps);
  break;

 


  case WM_KEYDOWN:
   switch(wParam)
   {
    case VK_ESCAPE:
     PostMessage( hWnd, WM_DESTROY, 0, 0L );
    break;
   }
  break;
 
  case WM_DESTROY:
   PostQuitMessage(0);
  return 0;
 }
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}


 

'프로그래밍 > API' 카테고리의 다른 글

ReadFile() 함수  (0) 2010.07.27
CSting의 유니코드를 파일로 저장 & 로드 할때  (0) 2010.05.25
멀티바이트->유니코드 , 유니코드->멀티바이트 간단변환  (0) 2010.05.25
하얀새님 블로그  (0) 2010.05.20
1  (0) 2010.05.20