『Lena's by ☆볶기!!』: Restart !!

Rorolena
[API] 윈도우 만들기

자 API 첫포스팅입니다.
이번 포스팅에선 간단하게 윈도우 창을
띄워 보기로 하겠습니다.

먼저 인도우를 만들려면
다음과 같은 과정을 거쳐야합니다.

먼저 VS 켜서 프로잭트를 새로 만듭니다.

여기서 Win32 프로젝트를 선택해주시고요

그다음은 응용프로그램과 빈프로젝트를 선택해줍니다.
그다음 아래의 소스를 작성해 주시면 됩니다.

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
LPCTSTR lpszClass=TEXT("Window!!");

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
    ,LPSTR lpszCmdParam,int nCmdShow)
{
 HWND hWnd;
 MSG Message;
 WNDCLASS WndClass;
 
 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;
 WndClass.lpszClassName=lpszClass;
 WndClass.lpszMenuName=NULL;
 WndClass.style=CS_HREDRAW | CS_VREDRAW;
 RegisterClass(&WndClass);

 hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW | WS_TABSTOP,
  CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  NULL,(HMENU)NULL,hInstance,NULL);
 ShowWindow(hWnd,nCmdShow);
 
 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)
{
 switch (iMessage) {
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

자 뭔가 콘솔을 만들때보다 소스가 길어졌습니다만
익숙해지면 사실 별거 없습니다.
윈도우 클래스 선언이랑 윈도우 창띄우고
메세지 루프 돌려준것 밖에 없거든요

여튼 이걸 띄우면 새하얀 창이하나 뜹니다.
그러면 윈도우가 완성된것 입니다.


뭔가 작성한 소스 길이에 비해
내용이 허무하다고 생각하실지 모르겠지만
API를 하신다면 앞으로 더욱 긴
장문의 소스를 작성하셔야 합니다.

이정도는 귀엽게 봐주는 안력과 내공을 키우자구요 ㅎ

'보관소 ▦ ━━ > 작업 기록' 카테고리의 다른 글

[API] 기초적 입력  (0) 2012.01.12
[API] 기초적 출력  (0) 2012.01.09
2012/01/06 API 포스팅 스타트  (0) 2012.01.06
[C/C++] 4. 데이터 표현의 방식  (0) 2012.01.04