[WinAPI]Hello WinAPI 예제

언어로그 2010. 12. 13. 19:31



WinAPI를 사용하여 간단한 윈도우 창을 뛰우는 예제
#include <windows.h>

LRESULT FAR PASCAL WndProc(HWND, UINT, UINT, LONG);

int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) 
{
	static char szAppName[] = "Hello Win";
	MSG msg;
	HWND hwnd;
	WNDCLASS wndclass;

        // 실제 생성할 윈도우 스타일 지정 
	if (!hPrevInstance) {
		wndclass.style = CS_HREDRAW | CS_VREDRAW;
		wndclass.lpfnWndProc = WndProc;
		wndclass.cbClsExtra = 0;
		wndclass.cbWndExtra = 0;
		wndclass.hInstance = hInstance;
		wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
		wndclass.hCursor = LoadCursor(NULL,  IDC_ARROW);
		wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
		wndclass.lpszMenuName = szAppName;
		wndclass.lpszClassName = szAppName;

		// 윈도우를 만들겠다고 통보 
		RegisterClass(&wndclass);
	}
	// 실제 윈도우 생성 
	hwnd = CreateWindow(szAppName, "Hello Win Demo",
						WS_OVERLAPPEDWINDOW,
						CW_USEDEFAULT, CW_USEDEFAULT,
						CW_USEDEFAULT, CW_USEDEFAULT,
						NULL, NULL, hInstance, NULL);
	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}


LRESULT FAR PASCAL WndProc(HWND hwnd, UINT message, UINT wParam, LONG lParam) 
{
	HDC hdc;
	PAINTSTRUCT ps;
	RECT rect;

	switch (message) 
	{
	case WM_PAINT:
			hdc = BeginPaint(hwnd, &ps);
			GetClientRect(hwnd, &rect);
			DrawText(hdc,  "Hello, Windows!", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
			EndPaint(hwnd, &ps);
			return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd, message, wParam, lParam);
}


'언어로그' 카테고리의 다른 글

[Perl] 펄 맛보기  (0) 2010.12.15
[WinAPI]Hello WinAPI 예제  (0) 2010.12.13