C/C++/API

2009.07.23 API 수업

꿀꿀이냐옹이 2009. 7. 23. 12:46
반응형

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("First");

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,int nCmdShow)
{
 
 HWND hWnd;
 MSG Message;
 WNDCLASS WndClass;
 g_hInst=hInstance;
 
 WndClass.cbClsExtra=0;
 WndClass.cbWndExtra=0;
 
 WndClass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);    //배경색 (흰색,회색,검정색)
 //WndClass.hbrBackground=CreateSolidBrush(RGB(255,0,0));    //배경색 (원색배경-RGB(적,녹,청))
 //WndClass.hbrBackground=CreateHatchBrush(HS_DIAGCROSS,RGB(255,0,0)); //배경색 (기울어진 바둑판 배경)
 
 WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);       //마우스 커서 (화살표 모양)
 //WndClass.hCursor=LoadCursor(NULL,IDC_CROSS);       //마우스 커서 (십자(+) 모양)
 //WndClass.hCursor=LoadCursor(NULL,IDC_IBEAM);       //마우스 커서 (I자 모양)
 //WndClass.hCursor=LoadCursor(NULL,IDC_NO);        //마우스 커서 (원안에 빗금친 모양)
 //WndClass.hCursor=LoadCursor(NULL,IDC_WAIT);       //마우스 커서 (모래시계 모양)

 WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);       //타이틀바 좌측 아이콘 변경 (기본창 모양)
 //WndClass.hIcon=LoadIcon(NULL,IDI_ASTERISK);       //타이틀바 좌측 아이콘 변경 (원 느낌표)
 //WndClass.hIcon=LoadIcon(NULL,IDI_ERROR);        //타이틀바 좌측 아이콘 변경 (엑스 모양)
 //WndClass.hIcon=LoadIcon(NULL,IDI_EXCLAMATION);      //타이틀바 좌측 아이콘 변경 (삼각형 느낌표)
 //WndClass.hIcon=LoadIcon(NULL,IDI_QUESTION);       //타이틀바 좌측 아이콘 변경 (물음표 모양)


 WndClass.hInstance=hInstance;
 WndClass.lpfnWndProc=WndProc;
 WndClass.lpszClassName=lpszClass;
 WndClass.lpszMenuName=lpszClass;
 WndClass.style=CS_HREDRAW | CS_VREDRAW;
 RegisterClass(&WndClass);
 
 hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,NULL);
 ShowWindow(hWnd,nCmdShow);
 
/**************************************************************************************************************************
 윈도우 속성..크기 색깔 타이틀바..

<코드>

  hWnd=CreateWindow(lpszClass,TEXT("내가만든 첫번째 윈도우즈 프로그램"),WS_HSCROLL|WS_SYSMENU,100,100,300,200,NULL,(HMENU)NULL,hInstance,NULL);
 
<부분 설명> 

*lpszClass,TEXT("타이틀바")타이틀바꾸기
 
*CW_USEDEFAULT  

    CW_USEDEFAULT(X축 위치),CW_USEDEFAULT(Y축 위치),CW_USEDEFAULT(폭),CW_USEDEFAULT(높이)
 윈도우가 기본 정의 해놓은 값을 사용 하려고 하면  CW_USEDEFAULT를 쓰면된다.
 

*WS_OVERLAPPEDWINDOW
 
 WS_CAPTION      타이틀 바를 가진다.
 WS_HSCROLL      수평 스크롤을 가진다.
 WS_VSCROLL      수직 스크롤을 가진다.
 WS_MAXIMIZEBOX  최대화 버튼을 가진다.
 WS_MINIMIZEBOX  초소화 버튼을 가진다.
 WS_SYSMENU      시스템 매뉴를 가진다.
 WS_THICKFRAME   크기를 조절할 수 있는 경계선을 가진다.
 WS_OVERLAPPEDWINDOW 윈도우가 기본 정의 해놓은 값을 사용 하려고 하면 
  EX)
  WS_HSCROLL|WS_SYSMENU 이렇게도 쓰이고
  WS_OVERLAPPEDWINDOW|WS_VSCROLL 이렇게도 쓰일수있다.
 
******************************************************************************************************************************/

 ShowWindow(hWnd,nCmdShow);       //윈도우에 표시한다
 
 

 
 while(GetMessage(&Message,NULL,0,0))    //GetMessage메세지 꺼냄
 {
  TranslateMessage(&Message);      //키보드 해석
  DispatchMessage(&Message);      //메세지 보냄
 }
 return (int)Message.wParam;       //종료
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM IParam)
{
 
 switch(iMessage)
 {
 case WM_DESTROY: PostQuitMessage(0);
  return 0;
 }
 return(DefWindowProc(hWnd,iMessage,wParam,IParam));
 
}

 

반응형