본문 바로가기
코스웨어/10년 시스템제어

[시스템 제어]5월 7일 26번 주진호

by 알 수 없는 사용자 2010. 5. 10.
728x90
반응형


API 수업내용

#include <windows.h>  
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;       // 전역변수
LPCTSTR lpszClass=TEXT("First");   // 전역변수 "first"가 창이름으로 들어간다.
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,int nCmdShow)
  //  api entry 포인트, main이 아닌 winmain이다
{
  HWND hWnd;
  MSG Message;

  WNDCLASS WndClass;  //
  g_hInst=hInstance;
  WndClass.cbClsExtra=0;   // 예약영역
  WndClass.cbWndExtra=0;   // 예약영역
  WndClass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);  // 윈도우 배경색상 지정 , 흰색 배경
 
  WndClass.hCursor=LoadCursor(NULL,IDC_CROSS);  // 윈도우가 사용할 마우스 커서
 //HCURSOR.LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName);
 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,TEXT("한샘아사랑해"),WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL,
   //100,100,300,200,
   100,100,CW_USEDEFAULT,CW_USEDEFAULT,
   //CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
   NULL,(HMENU)NULL,hInstance,NULL);
  // CreateWindow : 등록한 윈도우 설정 함수들의 정보를 메모리에 올려, 메모리에 윈도우 생성함
 
  ShowWindow(hWnd,nCmdShow);    
  //ShowWindow : 생성된 윈도우를 화면에 보여주는 역할을 함    
 
 
 // while 문쪽과 WndProc 문은 메세지 처리 부분이다.
 
  while (GetMessage(&Message,NULL,0,0))
  {
   TranslateMessage(&Message);
   DispatchMessage(&Message);
  }
  return (int)Message.wParam;
 }

// API에서는 WinMain 함수와 WinProc 두 함수가 다 있어야만 하나의 프로그램이 실행 가능하다.
 
// while문을 통해 OS로부터 오는 메세지를 어떻게 처리할 것인지 판단하는 부분
// WndProc은 사용자와 시스템이 보내오는 메시지를 처리하는 일을 한다.
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
  switch (iMessage)
 {
  case WM_CREATE: // 처음 만들어질때 발생
   return 0;
  case WM_LBUTTONDOWN:  // 마우스 좌버튼 클릭시 발생
   return 0;
  case WM_RBUTTONDOWN:  //마우스 우버튼 클릭시 발생
   return 0;
  case WM_KEYDOWN:  // 방향키 입력시 발생
   return 0;
  case WM_CHAR:  // 문자 입력시 발생
   return 0;
  case WM_DESTROY:   //사용자가 프로그램을 끝내려고 한다면
   PostQuitMessage(0);//이 함수를 호출하여 &message에 fault를 리턴한다.
   return 0;
  }
  return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
728x90