>

콘솔창에서 깨작거리는 것을 넘어서 GUI 프로그래밍을 짜보고 싶었다. 그래서 공부를 시작함


필수 함수들 : WinMain() , WndProc();

WinMain() -> 프로그램 시작 지점, 윈도우를 만들고 출력시킴

WndProc() -> 실질적인 동작, 메세지 처리함수 


WinMain 에서 윈도우 클래스를 등록하고 창을 출력시킴 -> CreateWindow 와 ShowWindow

그리고 메시지 루프를 시킨다. GetMessage , TranslateMessage , DispatchMessage


WndProc 함수는 메세지를 받고 그 메세지에 따른 루틴들을 작성


#include<stdio.h>

#include<conio.h>

#include<Windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

HINSTANCE g_hInst;

LPCWSTR 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(LTGRAY_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;

RegisterClass(&WndClass);


// 윈도우 클래스 등록


hWnd=CreateWindow(lpszClass,lpszClass,WS_CAPTION | WS_SYSMENU,CW_USEDEFAULT,CW_USEDEFAULT,500,500,NULL,(HMENU)NULL,hInstance,NULL); // 4번째 인자부터는 x y 폭 높이

ShowWindow(hWnd,nCmdShow);


while(GetMessage(&Message,0,0,0))

{

TranslateMessage(&Message);

DispatchMessage(&Message);

}

return Message.wParam;


}


LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

switch(iMessage)

{

case WM_DESTROY:

PostQuitMessage(0);

return 0;


case WM_PAINT:

hdc=BeginPaint(hWnd,&ps);

TextOut(hdc,100,100,L"TEST",4);

EndPaint(hWnd,&ps);

return 0;

}

return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}


거의 되면 이러한 형태를 띈다. 창에다가 TEST 라는 문자열을 출력시키는 간단한 예제

'Programming > windows API' 카테고리의 다른 글

const char 바이바이  (0) 2014.03.22
Posted by Mungsul
,