Public feed #381721

Stuff

public text v1 · immutable
Raw Edit
·published 2007-03-05 01:01 UTC
rendered paste body
#include <windows.h>

//Function prototypes

LRESULT WINAPI WndProc(HWND hWnd , UINT msg ,WPARAM wParam , LPARAM  lParam);
void RegisterWindowClass(HINSTANCE hInstance);
void CreateAppWindow(HINSTANCE hInstance);
WPARAM StartMessageLoop();

//Global varibles 

HWND g_hWnd;

INT WINAPI WinMain(HINSTANCE hInstance , HINSTANCE , LPSTR , INT)
{
	RegisterWindowClass(hInstance);
	CreateAppWindow(hInstance);
	ShowWindow(g_hWnd , SW_SHOWDEFAULT);
	UpdateWindow(g_hWnd);
	INT result = StartMessageLoop();
	return 0;
}

LRESULT WINAPI WndProc(HWND hWnd ,UINT msg , WPARAM wParam , LPARAM lParam)
{
	switch(msg)
	{
	case WM_CREATE:
		return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;

	case WM_PAINT:
		ValidateRect(hWnd , NULL);
		return 0;

	}
	return DefWindowProc(hWnd , msg , wParam , lParam);
}

void RegisterWindowClass(HINSTANCE hInstance)
{
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = CS_HREDRAW  | CS_VREDRAW | CS_OWNDC;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(NULL , IDC_ARROW);
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = "WinApp";
	wc.hIconSm = NULL;

	RegisterClassEx(&wc);
}

void CreateAppWindow(HINSTANCE hInstance)
{
	g_hWnd = CreateWindowEx(NULL , 
		                    "WinApp",
							"Basic Windows Application",
							WS_OVERLAPPEDWINDOW,
							100,
							100,
							648,
							514,
							GetDesktopWindow(),
	                        NULL,
							hInstance,
							NULL
							);
}

WPARAM StartMessageLoop()
{
	MSG msg;
	while(1)
	{
		if(PeekMessage(&msg , NULL , 0 , 0 , PM_REMOVE))
		{
			if(msg.message == WM_QUIT)
			break;
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		else
		{
		
		}
	}
	return msg.wParam;
}