2009.07.23 API 수업
#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));
}