|
|
1.1 ! root 1: /*==============================================================*\ ! 2: * Init.c - routines for initialization and exit processing ! 3: * Created 1989, 1990 Microsoft Corp. ! 4: *-------------------------------------------------------------- ! 5: * ! 6: * This module contains the code for application initialization ! 7: * as well as the code for exit list processing ! 8: * ! 9: *-------------------------------------------------------------- ! 10: * ! 11: * This source file contains the following functions: ! 12: * ! 13: * Init() - initialization routines ! 14: * InitMainWindow(hwnd, mp1, mp2) ! 15: * ExitProc(usTermCode) - exit list processing procedure ! 16: * ! 17: \*==============================================================*/ ! 18: ! 19: /*--------------------------------------------------------------*\ ! 20: * Include files, macros, defined constants, and externs ! 21: \*--------------------------------------------------------------*/ ! 22: ! 23: #define INCL_WINWINDOWMGR ! 24: #define INCL_DOSPROCESS ! 25: ! 26: #include <os2.h> ! 27: #include <string.h> ! 28: #include "main.h" ! 29: #include "xtrn.h" ! 30: ! 31: /*--------------------------------------------------------------*\ ! 32: * Global variables ! 33: \*--------------------------------------------------------------*/ ! 34: ! 35: ! 36: /*--------------------------------------------------------------*\ ! 37: * Entry point declarations ! 38: \*--------------------------------------------------------------*/ ! 39: ! 40: /****************************************************************\ ! 41: * Initialization routine ! 42: *-------------------------------------------------------------- ! 43: * ! 44: * Name: Init() ! 45: * ! 46: * Purpose: Performs initialization functions required ! 47: * before the main window can be created. ! 48: * ! 49: * Usage: Called once before the main window is created. ! 50: * ! 51: * Method: ! 52: * - installs the routine ExitProc into the ! 53: * DosExitList chain ! 54: * - registers all window classes ! 55: * - performs any command line processing ! 56: * ! 57: * Returns: ! 58: * TRUE - initialization is successful ! 59: * FALSE - initialization failed ! 60: \****************************************************************/ ! 61: BOOL Init(VOID) ! 62: { ! 63: ! 64: /* Add ExitProc to the exit list to handle the exit processing. If ! 65: * there is an error, then terminate the process since there have ! 66: * not been any resources allocated yet ! 67: */ ! 68: if(DosExitList(EXLST_ADD, (PFNEXITLIST)ExitProc)) { ! 69: MessageBox(HWND_DESKTOP, ! 70: IDMSG_CANNOTLOADEXITLIST, ! 71: MB_OK | MB_ERROR, ! 72: TRUE); ! 73: DosExit(EXIT_PROCESS, RETURN_ERROR); ! 74: } ! 75: ! 76: /* initialize the print dialog structures */ ! 77: InitPrintingDialogs(); ! 78: ! 79: /* load application name from resource file */ ! 80: if(!WinLoadString(hab, NULL, IDS_APPNAME, MAXNAMEL, szAppName)) ! 81: return FALSE; ! 82: ! 83: /* load "untitled" string */ ! 84: if(!WinLoadString(hab, NULL, IDS_UNTITLED, MESSAGELEN, szUntitled)) ! 85: return FALSE; ! 86: ! 87: /* register the main client window class */ ! 88: if(!WinRegisterClass(hab, ! 89: (PSZ)szAppName, ! 90: (PFNWP)MainWndProc, ! 91: CS_SIZEREDRAW | CS_CLIPCHILDREN, ! 92: 0)) { ! 93: return FALSE; ! 94: } ! 95: ! 96: /* If you wish to create a thread for background processing, define ! 97: * the BACKGROUND_THREAD constant ! 98: * the routine commented out here. The routines for the background ! 99: * thread are in the thrd.c file. ! 100: */ ! 101: ! 102: #ifdef BACKGROUND_THREAD ! 103: /* see main.h for comment on using a background thread */ ! 104: ! 105: if(!CreateBackgroundThread()) ! 106: return FALSE; ! 107: ! 108: #endif ! 109: ! 110: /*--------------------------------------------------*\ ! 111: * Add any command line processing here ! 112: \*--------------------------------------------------*/ ! 113: ! 114: ! 115: return TRUE; ! 116: ! 117: } /* Init() */ ! 118: ! 119: /****************************************************************\ ! 120: * Initialization routine ! 121: *-------------------------------------------------------------- ! 122: * ! 123: * Name: InitMainWindow(hwnd, mp1, mp2) ! 124: * ! 125: * Purpose: Performs initialization functions required ! 126: * when the main window is created. ! 127: * ! 128: * Usage: Called once during the WM_CREATE processing when ! 129: * the main window is created. ! 130: * ! 131: * Method: ! 132: * ! 133: * Returns: value to be returned from the WM_CREATE message: ! 134: * TRUE - window creation should stop ! 135: * FALSE - window creation should continue ! 136: \****************************************************************/ ! 137: MRESULT InitMainWindow(hwnd, mp1, mp2) ! 138: HWND hwnd; /* handle to the main client window */ ! 139: MPARAM mp1; /* first parameter of WM_CREATE message */ ! 140: MPARAM mp2; /* second parameter of WM_CREATE message */ ! 141: { ! 142: ! 143: UpdateTitleText(((PCREATESTRUCT)PVOIDFROMMP(mp2))->hwndParent); ! 144: ! 145: /* return FALSE to continue window creation, TRUE to abort it */ ! 146: return (MRESULT)FALSE; ! 147: ! 148: ! 149: ! 150: /* This routine currently doesn't use the hwnd, mp1, and mp2 parameters *\ ! 151: * so they are referenced here to prevent an 'Unreferenced Parameter' ! 152: \* warning at compile time */ ! 153: ! 154: hwnd; ! 155: mp1; ! 156: mp2; ! 157: ! 158: ! 159: } /* InitMainWindow() */ ! 160: ! 161: ! 162: /****************************************************************\ ! 163: * Exit list processing procedure ! 164: *-------------------------------------------------------------- ! 165: * ! 166: * Name: ExitProc(usTermCode) ! 167: * ! 168: * Purpose: Cleans up certain resources when the application ! 169: * terminates ! 170: * ! 171: * Usage: Routine is called by DosExitList when the ! 172: * application exits ! 173: * ! 174: * Method: global resources, such as the main window and ! 175: * message queue, are destroyed and any system ! 176: * resources used are freed ! 177: * ! 178: * Returns: Returns EXLST_EXIT to the DosExitList handler ! 179: * ! 180: \****************************************************************/ ! 181: ! 182: VOID PASCAL ExitProc(usTermCode) ! 183: USHORT usTermCode; /* code for the reason for termination */ ! 184: { ! 185: ! 186: /* destroy the main window if it exists */ ! 187: if(WinIsWindow(hab, hwndMainFrame)) { ! 188: WinDestroyWindow(hwndMainFrame); ! 189: } ! 190: ! 191: /*--------------------------------------------------*\ ! 192: * Any other system resources used ! 193: * (e.g. memory or files) should be freed here ! 194: \*--------------------------------------------------*/ ! 195: ! 196: ! 197: WinDestroyMsgQueue(hmq); ! 198: ! 199: WinTerminate(hab); ! 200: ! 201: DosExitList(EXLST_EXIT, 0L); /* termination complete */ ! 202: ! 203: ! 204: ! 205: /* This routine currently doesn't use the usTermCode parameter so *\ ! 206: * it is referenced here to prevent an 'Unreferenced Parameter' ! 207: \* warning at compile time */ ! 208: ! 209: usTermCode; ! 210: ! 211: } /* ExitProc() */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.