Annotation of os232sdk/toolkt20/c/samples/image/img_init.c, revision 1.1

1.1     ! root        1: /*==============================================================*\
        !             2:  *  img_init.c - routines for initialization
        !             3:  *      Created 1989, 1990 IBM, 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()
        !            14:  *      InitMainWindow(hwnd, mp1, mp2)
        !            15:  *      InitGlobalVars()
        !            16:  *      InitClientArea(hwnd)
        !            17:  *
        !            18:  *
        !            19: \*==============================================================*/
        !            20: /*--------------------------------------------------------------*\
        !            21:  *  Include files, macros, defined constants, and externs       *
        !            22: \*--------------------------------------------------------------*/
        !            23: #define INCL_DOSPROCESS
        !            24: #define INCL_DOSERRORS
        !            25: #define INCL_WINWINDOWMGR
        !            26: #define INCL_WINFRAMEMGR
        !            27: #define INCL_WINSYS
        !            28: #define INCL_WINPOINTERS
        !            29: #define INCL_GPIPRIMITIVES
        !            30: 
        !            31: #include <os2.h>
        !            32: #include "img_main.h"
        !            33: #include "img_xtrn.h"
        !            34: 
        !            35: /*--------------------------------------------------------------*\
        !            36:  *  Entry point declarations                                    *
        !            37: \*--------------------------------------------------------------*/
        !            38: BOOL InitMainWindow(VOID);
        !            39: BOOL InitGlobalVars(VOID);
        !            40: BOOL InitClientArea(HWND hwnd);
        !            41: 
        !            42: /*--------------------------------------------------------------*\
        !            43:  *  static variables                                            *
        !            44: \*--------------------------------------------------------------*/
        !            45: CHAR szAppName[CCHAPPNAME];                /* application title */
        !            46: #define RETURN_ERROR        1        /* error return in DosExit */
        !            47: 
        !            48: /****************************************************************\
        !            49:  *  Initialization routine                                      *
        !            50:  *--------------------------------------------------------------*
        !            51:  *                                                              *
        !            52:  *  Name:   Init()                                              *
        !            53:  *                                                              *
        !            54:  *  Purpose: Performs initialization functions.                 *
        !            55:  *                                                              *
        !            56:  *  Usage:  Called once before the main window is created.      *
        !            57:  *                                                              *
        !            58:  *  Method:                                                     *
        !            59:  *          - register all window classes                       *
        !            60:  *          - setup main application window                     *
        !            61:  *          - set global variables                              *
        !            62:  *                                                              *
        !            63:  *  Returns:                                                    *
        !            64:  *          NO_ERROR  - initiaization is successful             *
        !            65:  *          String_ID - initialization failed                   *
        !            66: \****************************************************************/
        !            67: USHORT Init(VOID)
        !            68: {
        !            69:     /* Add ExitProc to the exit list to handle the exit processing.  If
        !            70:      * there is an error, then terminate the process since there have
        !            71:      * not been any resources allocated yet
        !            72:      */
        !            73:     if (DosExitList(EXLST_ADD, (PFNEXITLIST)ExitProc))  {
        !            74:         MessageBox(HWND_DESKTOP,
        !            75:                    IDMSG_CANNOTLOADEXITLIST, 0,
        !            76:                    MB_OK | MB_ERROR,
        !            77:                    TRUE);
        !            78:         DosExit(EXIT_PROCESS, RETURN_ERROR);
        !            79:     }
        !            80: 
        !            81:     /* load application name from resource file */
        !            82:     if (!WinLoadString(vhab, NULL, IDS_APPNAME, CCHAPPNAME, szAppName))
        !            83:         return IDMSG_CANNOTLOADSTRING;
        !            84: 
        !            85:     /* register the main client window class */
        !            86:     if (!WinRegisterClass(vhab,
        !            87:                  szAppName,
        !            88:                  (PFNWP)MainWndProc,
        !            89:                  0L,
        !            90:                  0))
        !            91:         return IDMSG_INITFAILED;
        !            92: 
        !            93:    /*
        !            94:     * create main application window & detach scrollbars
        !            95:     */
        !            96:     if (!InitMainWindow())
        !            97:         return IDMSG_MAINWINCREATEFAILED;
        !            98: 
        !            99:    /*
        !           100:     * set up globals used for sizing & system pointers
        !           101:     */
        !           102:     if (!InitGlobalVars())
        !           103:         return IDMSG_INITFAILED;
        !           104: 
        !           105:    /*
        !           106:     * this function prepares the application for loading images
        !           107:     */
        !           108:     InitClientArea(vhwndClient);
        !           109: 
        !           110:    /*
        !           111:     * initialise help mechanism
        !           112:     */
        !           113: #ifdef HELP_MANAGER_ENABLED
        !           114:     HelpInit();
        !           115: #endif
        !           116: 
        !           117:     return NO_ERROR;
        !           118: 
        !           119: }  /* Init() */
        !           120: 
        !           121: /****************************************************************\
        !           122:  *  Main Window Setup Routine                                   *
        !           123:  *--------------------------------------------------------------*
        !           124:  *                                                              *
        !           125:  *  Name:    InitMainWindow()                                   *
        !           126:  *                                                              *
        !           127:  *  Purpose: Creates the application window and puts it into    *
        !           128:  *           it's initial state.                                *
        !           129:  *                                                              *
        !           130:  *  Usage:   Called once by the Init() routine                  *
        !           131:  *                                                              *
        !           132:  *  Method:                                                     *
        !           133:  *          - create main application window                    *
        !           134:  *          - detach scrollbars from window                     *
        !           135:  *          - subclass frame window procedure                   *
        !           136:  *                                                              *
        !           137:  *  Returns:                                                    *
        !           138:  *          TRUE - window successfully created                  *
        !           139:  *          FALSE - window creation failed                      *
        !           140: \****************************************************************/
        !           141: BOOL InitMainWindow(VOID)
        !           142: {
        !           143:     ULONG ctlData = FCF_STANDARD | FCF_VERTSCROLL | FCF_HORZSCROLL;
        !           144: 
        !           145:    /*
        !           146:     * create a window with standard controls
        !           147:     */
        !           148:     vhwndFrame = WinCreateStdWindow(
        !           149:                          HWND_DESKTOP,
        !           150:                          WS_VISIBLE,
        !           151:                          &ctlData,
        !           152:                          szAppName,
        !           153:                          (PSZ)NULL,
        !           154:                          WS_CLIPCHILDREN,
        !           155:                          (HMODULE)NULL,
        !           156:                          IDR_MAIN,
        !           157:                          &vhwndClient);
        !           158:     if (!vhwndFrame)
        !           159:         return FALSE;
        !           160: 
        !           161:    /*
        !           162:     * for the time being detach the scrollbars from the main
        !           163:     * window - but remember their handles for later
        !           164:     */
        !           165:     vhwndVScroll = WinWindowFromID(vhwndFrame, FID_VERTSCROLL);
        !           166:     vhwndHScroll = WinWindowFromID(vhwndFrame, FID_HORZSCROLL);
        !           167:     WinSetParent(vhwndVScroll, HWND_OBJECT, FALSE);
        !           168:     WinSetParent(vhwndHScroll, HWND_OBJECT, FALSE);
        !           169:     WinSendMsg(vhwndFrame, WM_UPDATEFRAME,
        !           170:                MPFROMLONG(FCF_VERTSCROLL | FCF_HORZSCROLL), 0L);
        !           171: 
        !           172:    /* save menubar handle */
        !           173:     vhwndMenu = WinWindowFromID(vhwndFrame, FID_MENU);
        !           174: 
        !           175:    /*
        !           176:     * the frame window procedure is subclassed, so that frame-sizing
        !           177:     * restrictions can be implemented.
        !           178:     */
        !           179:     if (!WinRegisterClass(vhab,
        !           180:                  "SUBFRAME",
        !           181:                  (PFNWP)FrameWndProc,
        !           182:                  0L,
        !           183:                  0))
        !           184:         return FALSE;
        !           185:     vpfnwpFrame = WinSubclassWindow(vhwndFrame, (PFNWP)FrameWndProc);
        !           186: 
        !           187:     return TRUE;
        !           188: 
        !           189: } /* InitMainWindow() */
        !           190: 
        !           191: /****************************************************************\
        !           192:  *  Client Area Preparation                                     *
        !           193:  *--------------------------------------------------------------*
        !           194:  *                                                              *
        !           195:  *  Name:    InitClientArea()                                   *
        !           196:  *                                                              *
        !           197:  *  Purpose: Prepares the client area to accept the images      *
        !           198:  *                                                              *
        !           199:  *  Usage:   Called once by the Init() routine                  *
        !           200:  *                                                              *
        !           201:  *  Method:                                                     *
        !           202:  *          - obtain a window device context                    *
        !           203:  *          - define the image presentation space               *
        !           204:  *          - associate the two                                 *
        !           205:  *          - set foreground/background colours &               *
        !           206:  *            background mix for the presentation space         *
        !           207:  *  Returns:                                                    *
        !           208:  *          TRUE - client area successfully setup               *
        !           209:  *          FALSE - client area setup failed                    *
        !           210: \****************************************************************/
        !           211: BOOL InitClientArea(hwnd)
        !           212: HWND hwnd;                       /* client window handle */
        !           213: {
        !           214:     SIZEL  sizl;
        !           215: 
        !           216:     sizl.cx = 0L;                /* set size to default for device    */
        !           217:     sizl.cy = 0L;                /*  (full screen)                    */
        !           218: 
        !           219:     vhdc = WinOpenWindowDC(hwnd);
        !           220:     if (!vhdc)
        !           221:         return FALSE;
        !           222: 
        !           223:     vhps = GpiCreatePS(vhab,
        !           224:                        vhdc,
        !           225:                        &sizl,
        !           226:                        (ULONG)PU_PELS | GPIT_NORMAL | GPIA_ASSOC
        !           227:                        );
        !           228:     if (!vhps)
        !           229:         return FALSE;
        !           230: 
        !           231:     GpiSetColor(vhps, vlForeClr);
        !           232:     GpiSetBackColor(vhps, vlBackClr);
        !           233:     GpiSetBackMix(vhps, BM_OVERPAINT);
        !           234: 
        !           235:     return TRUE;
        !           236: 
        !           237: }   /* InitClientArea() */
        !           238: 
        !           239: /****************************************************************\
        !           240:  *  Global Variable Initialisation Routine                      *
        !           241:  *--------------------------------------------------------------*
        !           242:  *                                                              *
        !           243:  *  Name:    InitGlobalVars()                                   *
        !           244:  *                                                              *
        !           245:  *  Purpose: Performs initialization of the application         *
        !           246:  *           global variables                                  * *                                                              *
        !           247:  *  Usage:   Called once by the Init() routine                  *
        !           248:  *                                                              *
        !           249:  *  Returns:                                                    *
        !           250:  *          TRUE - initialization is successful                 *
        !           251:  *          FALSE - initialization failed                       *
        !           252:  *                                                              *
        !           253: \****************************************************************/
        !           254: BOOL InitGlobalVars(VOID)
        !           255: {
        !           256:     /* load system sizes */
        !           257:     vlXScreen = WinQuerySysValue(HWND_DESKTOP, SV_CXSCREEN);
        !           258:     vlYScreen = WinQuerySysValue(HWND_DESKTOP, SV_CYSCREEN);
        !           259:     vlcxVScroll = WinQuerySysValue(HWND_DESKTOP, SV_CXVSCROLL);
        !           260:     vlcyHScroll = WinQuerySysValue(HWND_DESKTOP, SV_CYHSCROLL);
        !           261:     vlcyTitle = WinQuerySysValue(HWND_DESKTOP, SV_CYTITLEBAR);
        !           262:     vlcyMenu = WinQuerySysValue(HWND_DESKTOP, SV_CYMENU);
        !           263:     vlcxBorder = WinQuerySysValue(HWND_DESKTOP, SV_CXSIZEBORDER);
        !           264:     vlcyBorder = WinQuerySysValue(HWND_DESKTOP, SV_CYSIZEBORDER);
        !           265: 
        !           266:     /* load system pointers */
        !           267:     vhptrArrow = WinQuerySysPointer(HWND_DESKTOP, SPTR_ARROW, FALSE);
        !           268:     vhptrWait = WinQuerySysPointer(HWND_DESKTOP, SPTR_WAIT, FALSE);
        !           269:     return TRUE;
        !           270: }

unix.superglobalmegacorp.com

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