Public feed
#381721
#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;
}