[02일차] Win32 API 이해[02일차] Win32 API 이해

Posted at 2014. 6. 16. 01:29 | Posted in 2014 개인기록/으으리 리버싱

#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(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, 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);
}
오늘은 두번째 수업 시간이다.

'2014 개인기록 > 으으리 리버싱' 카테고리의 다른 글

[02일차] Win32 API 프로그램 종료  (0) 2014.06.15
//