Annotation of os232sdk/toolkt20/c/samples/style/sty_init.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.