/////////////////////////////////////////////////////////////////////////////////////////////// //Basic Window App /////////////////////////////////////////////////////////////////////////////////////////////// #include //Fuction prototypes LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); void RegisterWindowClass(HINSTANCE hInstance); void CreateAppWindow(HINSTANCE hInstance); WPARAM StartMessageLoop(); //Global Variables. HWND g_hWnd; /////////////////////////////////////////////////////////////////////////////////////////////// //WinMain() /////////////////////////////////////////////////////////////////////////////////////////////// INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, INT) { RegisterWindowClass(hInstance); CreateAppWindow(hInstance); ShowWindow(g_hWnd, SW_SHOWDEFAULT); UpdateWindow(g_hWnd); INT result = StartMessageLoop(); return result; } /////////////////////////////////////////////////////////////////////////////////////////////// //WndProc() /////////////////////////////////////////////////////////////////////////////////////////////// LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CREATE: return 0; case WM_DESTROY: PostQuitMessage( 0 ); case WM_PAINT: ValidateRect(g_hWnd, NULL); return 0; } return DefWindowProc(hWnd, msg,wParam, lParam); } /////////////////////////////////////////////////////////////////////////////////////////////// //RegisterWindowClass() /////////////////////////////////////////////////////////////////////////////////////////////// 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, IDI_APPLICATION); wc.hCursor = (HCURSOR)LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "WinApp"; wc.hIconSm = NULL; RegisterClassEx(&wc); } /////////////////////////////////////////////////////////////////////////////////////////////// //CreateAppWindow() /////////////////////////////////////////////////////////////////////////////////////////////// void CreateAppWindow(HINSTANCE hInstance) { g_hWnd = CreateWindowEx( NULL, "WinApp", "Basic Windows Application", WS_OVERLAPPEDWINDOW, 100, 100, 648, 514, GetDesktopWindow(), NULL, hInstance, NULL); } /////////////////////////////////////////////////////////////////////////////////////////////// //StartMessageLoop() /////////////////////////////////////////////////////////////////////////////////////////////// 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 { // Use idle time here. } } return msg.wParam; }