163 lines
4.1 KiB
C
163 lines
4.1 KiB
C
|
/*
|
||
|
init.c
|
||
|
|
||
|
initialisation, termination and error handling code
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <windows.h>
|
||
|
#include "PlaySnd.h"
|
||
|
#include <stdarg.h>
|
||
|
|
||
|
|
||
|
/***************************************************************************
|
||
|
|
||
|
@doc INTERNAL
|
||
|
|
||
|
@api BOOL | InitApp | Initialise the application.
|
||
|
|
||
|
@rdesc The return value is TRUE if the application is successfully
|
||
|
initialised, otherwise it is FALSE.
|
||
|
|
||
|
***************************************************************************/
|
||
|
|
||
|
BOOL InitApp()
|
||
|
{
|
||
|
WNDCLASS wc;
|
||
|
|
||
|
// set up our module handle for resource loading etc.
|
||
|
|
||
|
ghModule = GetModuleHandle(NULL);
|
||
|
|
||
|
// get the name of our app
|
||
|
WinEval(LoadString(ghModule, IDS_APPNAME, szAppName, sizeof(szAppName)));
|
||
|
|
||
|
// load the profile info
|
||
|
bSync = GetProfileInt(szAppName, "bSync", 0);
|
||
|
bNoWait = GetProfileInt(szAppName, "bNoWait", 0);
|
||
|
bResourceID = GetProfileInt(szAppName, "bResourceID", 0);
|
||
|
|
||
|
#ifdef MEDIA_DEBUG
|
||
|
// If we are in DEBUG mode, get debug level for this module
|
||
|
dGetDebugLevel(szAppName);
|
||
|
dprintf(("started (debug level %d)", __iDebugLevel));
|
||
|
#endif
|
||
|
|
||
|
// define the class of the main window
|
||
|
|
||
|
wc.lpszClassName = szAppName;
|
||
|
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||
|
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||
|
wc.hIcon = LoadIcon(ghModule, MAKEINTRESOURCE(IDI_ICON));
|
||
|
wc.lpszMenuName = MAKEINTRESOURCE(IDM_MENU); // "Menu";
|
||
|
wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1);
|
||
|
wc.hInstance = ghModule;
|
||
|
wc.lpfnWndProc = (WNDPROC)MainWndProc;
|
||
|
wc.cbClsExtra = 0;
|
||
|
wc.cbWndExtra = 0;
|
||
|
|
||
|
WinEval(RegisterClass(&wc));
|
||
|
|
||
|
// create a window for the application
|
||
|
|
||
|
ghwndMain = CreateWindow(szAppName,
|
||
|
szAppName,
|
||
|
WS_OVERLAPPEDWINDOW,
|
||
|
GetSystemMetrics(SM_CXSCREEN) / 8,
|
||
|
GetSystemMetrics(SM_CYSCREEN) / 4,
|
||
|
GetSystemMetrics(SM_CXSCREEN) * 4 / 5,
|
||
|
GetSystemMetrics(SM_CYSCREEN) / 3,
|
||
|
(HWND)NULL,
|
||
|
(HMENU)NULL,
|
||
|
ghModule,
|
||
|
(LPSTR)NULL
|
||
|
);
|
||
|
|
||
|
WinAssert(ghwndMain);
|
||
|
|
||
|
#ifdef MEDIA_DEBUG
|
||
|
dDbgSetDebugMenuLevel(__iDebugLevel); // set debug menu state
|
||
|
#endif
|
||
|
|
||
|
ShowWindow(ghwndMain, SW_SHOWNORMAL);
|
||
|
UpdateWindow(ghwndMain); // paint it
|
||
|
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
/***************************************************************************
|
||
|
|
||
|
@doc INTERNAL
|
||
|
|
||
|
@api void | CreateApp | Initialise the application when WM_CREATE
|
||
|
message is received.
|
||
|
|
||
|
@parm HWND | hWnd | Handle to the parent window.
|
||
|
|
||
|
@rdesc There is no return value.
|
||
|
|
||
|
***************************************************************************/
|
||
|
|
||
|
void CreateApp(HWND hWnd)
|
||
|
{
|
||
|
hWnd;
|
||
|
}
|
||
|
|
||
|
/***************************************************************************
|
||
|
|
||
|
@doc INTERNAL
|
||
|
|
||
|
@api void | TerminateApp | Terminate the application.
|
||
|
|
||
|
@parm LPSTR | lpszFormat | A printf style format string
|
||
|
@parm ... | ... | Printf style args
|
||
|
|
||
|
@rdesc There is no return value.
|
||
|
|
||
|
***************************************************************************/
|
||
|
|
||
|
void TerminateApp()
|
||
|
{
|
||
|
char buf[20];
|
||
|
|
||
|
// save profile info
|
||
|
sprintf(buf, "%d", bSync);
|
||
|
WriteProfileString(szAppName, "bSync", buf);
|
||
|
sprintf(buf, "%d", bNoWait);
|
||
|
WriteProfileString(szAppName, "bNoWait", buf);
|
||
|
sprintf(buf, "%d", bResourceID);
|
||
|
WriteProfileString(szAppName, "bResourceID", buf);
|
||
|
|
||
|
|
||
|
dprintf(("ending", szAppName));
|
||
|
dSaveDebugLevel(szAppName);
|
||
|
}
|
||
|
|
||
|
/***************************************************************************
|
||
|
|
||
|
@doc INTERNAL
|
||
|
|
||
|
@api void | Error | Show an error message box.
|
||
|
|
||
|
@rdesc There is no return value.
|
||
|
|
||
|
***************************************************************************/
|
||
|
|
||
|
void Error(LPSTR lpszFormat, ...)
|
||
|
{
|
||
|
int i;
|
||
|
char buf[256];
|
||
|
va_list va;
|
||
|
|
||
|
va_start(va, lpszFormat);
|
||
|
i = vsprintf(buf, lpszFormat, va);
|
||
|
va_end(va);
|
||
|
|
||
|
MessageBeep(MB_ICONEXCLAMATION);
|
||
|
MessageBox(ghwndMain, buf, szAppName, MB_OK | MB_ICONEXCLAMATION);
|
||
|
}
|
||
|
|
||
|
|