#include<stdio.h>
#Pragma warning(Push, 3)
#include<windows.h>
#Pragma warning(pop)
#define GAME_NAME "bill's Super Shooty World"
LRESULT CALLBACK MainWindowProc(
_In_ HWND WindowHandle, // handle to window
_In_ UINT Message, // message identifier
_In_ WPARAM wParam, // first message parameter
_In_ LPARAM LParam); // second message parameter
DWORD CreatMainGameWindow(void);
BOOL GameIsAlreadyRunning(void);
/////////////////////////////////////////
int WinMain(HINSTANCE Instance, HINSTANCE PreviousInstance, PSTR CommandLine, INT CmdShow)
{
UNREFERENCED_PARAMETER(Instance);
UNREFERENCED_PARAMETER(PreviousInstance);
UNREFERENCED_PARAMETER(CommandLine);
UNREFERENCED_PARAMETER(CmdShow);
if (GameIsAlreadyRunning() == TRUE)
{
MessageBoxA(NULL, "The game is already running, ya dummie!", "Error!", MB_ICONEXCLAMATION | MB_OK);
goto Exit;
}
if (CreatMainGameWindow() != ERROR_SUCCESS)
{
goto Exist;
}
///////////////////////////////
MSG Message = { 0 };
while(GetMessageA(&Message, NULL, 0, 0) > 0)
{
TranslateMessage(&Message);
DispatchMessageA(&Message);
}
Exist:
return (0);
}
LRESULT CALLBACK MainWindowProc(
_In_ HWND WindowHandle, // handle to window
_In_ UINT Message, // message identifier
_In_ WPARAM wParam, // first message parameter
_In_ LPARAM LParam); // second message parameter
{
LRESULT Result = 0;
switch (Message)
{
case WM_CLOSE:
{
PostQuitMessage(0);
break;
}
default:
{
Result = return DefWindowProcA(hwnd, uMsg, wParam, lParam);
}
}
return (Result);
}
/////////////////////////////////////
DWORD CreatMainGameWindow(void);
{
DWORD Result = ERROR_SUCCESS
WNDCLASSEXA WindowClass = { 0 };
HWND WindowHandle = 0;
//MSG Msg;
WindowClass.cbSize = sizeof(WNDCLASSEXA);
WindowClass.style = 0;
WindowClass.lpfnWndProc = MainWindowProc;
WindowClass.cbClsExtra = 0;
WindowClass.cbWndExtra = 0;
WindowClass.hInstance = GetModuleHandleA(NULL);
WindowClass.hIcon = LoadIconA(NULL, IDI_APPLICATION);
WindowClass.hIconSm = LoadIconA(NULL, IDI_APPLICATION);
WindowClass.hCursor = LoadCursorA(NULL, IDC_ARROW);
WindowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
WindowClass.lpszMenuName = NULL;
WindowClass.lpszClassName = GAME_NAME "_WINDOWCLASS";
if (RegisterClassExA(&WindowClass) == 0)
{
Result = GetLastError();
MessageBoxA(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
goto Exit;
}
//////////////////////////////////////////////
WindowHandle = CreateWindowExA(
WS_EX_CLIENTEDGE,
WindowClass.lpszClassName,
"Window Title",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, GetModuleHandleA(NULL), NULL);
if(WindowHandle == NULL)
{
Result = GetLastError();
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
goto Exit;
}
//////////////////////////////////////////////use only if you don't have WS_VISIBLE
//ShowWindow(WindowHandle, TRUE);
//////////////////////////////////////////////
Exist:
return(Result);
}
////////////////////////////////////
BOOL GameIsAlreadyRunning(void);
{
HANDLE Mutex = NULL;
Mutex = CreatedMutexA(NULL, FALSE, GAME_NAME "_GameMutex");
if (GetLastError() == ERROR_ALEADY_EXISTS)
{
return(TRUE);
}
else
{
return(FALSE);
}
}
///////////////////////////////////