/* init.c initialisation, termination and error handling code */ #include #include #include "PlaySnd.h" #include /*************************************************************************** @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); }