#include "stdhdr.h"
#include "Debug.h"
#include "Sound.h"
#include "Input.h"
#include "Window.h"
HWND hWndMain;
BOOL g_bActive = FALSE;
LRESULT CALLBACK MainWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CLOSE:
OnClose();
DestroyWindow(hWnd);
return 0;
case WM_SETCURSOR:
SetCursor(NULL);
return 0;
case WM_ACTIVATE:
if (LOWORD(wParam) == WA_INACTIVE)
{
TRACE0("Deactivating...\n");
g_bActive = FALSE;
UnacquireDevices();
StopBackgroundMusic();
}
else
{
TRACE0("Activating...\n");
g_bActive = TRUE;
AcquireDevices();
PlayBackgroundMusic();
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
void RegisterWindowClass()
{
WNDCLASSEX wcx;
ZeroMemory(&wcx, sizeof(WNDCLASSEX));
wcx.cbSize = sizeof(WNDCLASSEX);
wcx.lpfnWndProc = MainWindowProc;
wcx.hInstance = GetModuleHandle(NULL);
wcx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcx.hCursor = NULL;
wcx.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wcx.lpszMenuName = NULL;
wcx.lpszClassName = "SampleWindowClass";
RegisterClassEx(&wcx);
}
BOOL InitWindow(LPCTSTR lpTitle)
{
RegisterWindowClass();
hWndMain = CreateWindowEx(WS_EX_APPWINDOW,
"SampleWindowClass", lpTitle, WS_POPUP,
0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
NULL, NULL, GetModuleHandle(NULL), NULL);
if (hWndMain == NULL)
{
DISPLAYERROR("Could not create window.");
return FALSE;
}
return TRUE;
}
void Run()
{
MSG msg;
for (;;)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (!GetMessage(&msg, NULL, 0, 0))
break;
DispatchMessage(&msg);
}
OnIdle();
}
}