Annotation of os232sdk/toolkt20/c/samples/vmm/vmm_dlg.c, revision 1.1

1.1     ! root        1: /*==============================================================*\
        !             2:  *  Vmm_dlg.c - window procedures for the dialog boxes as well *
        !             3:  *             as utility procedures used by them              *
        !             4:  *     Created 1990, Microsoft, IBM Corp.                              *
        !             5:  *--------------------------------------------------------------*
        !             6:  *                                                             *
        !             7:  *  This module contains the Dialog Procedures for the user    *
        !             8:  *  defined dialogs as well as any support code they need      *
        !             9:  *                                                             *
        !            10:  *--------------------------------------------------------------*
        !            11:  *                                                             *
        !            12:  *  This source file contains the following functions:         *
        !            13:  *                                                             *
        !            14:  *          AboutBoxWndProc(hwnd, msg, mp1, mp2)               *
        !            15:  *           AllocMemDlgProc(hwnd, msg, mp1, mp2)               *
        !            16:  *           SetMem1DlgProc( hwnd, msg, mp1, mp2)               *
        !            17:  *           SetMem2DlgProc( hwnd, msg, mp1, mp2)               *
        !            18:  *           ReadMemDlgProc( hwnd, msg, mp1, mp2)               *
        !            19:  *           WriteMemDlgProc(hwnd, msg, mp1, mp2)               *
        !            20:  *           FreeMemDlgProc( hwnd, msg, mp1, mp2)               *
        !            21:  *                                                              *
        !            22:  *           CheckBox( hwnd, ulMask, idBox)                     *
        !            23:  *           QueryCheckBox(hwnd, ulMask, idBox)                 *
        !            24:  *                                                              *
        !            25: \*==============================================================*/
        !            26: 
        !            27: /*--------------------------------------------------------------*\
        !            28:  *  Include files, macros, defined constants, and externs      *
        !            29: \*--------------------------------------------------------------*/
        !            30: 
        !            31: #define  LINT_ARGS
        !            32: 
        !            33: #define  INCL_WIN
        !            34: #define  INCL_GPI
        !            35: #define  INCL_DOSPROCESS
        !            36: #include <os2.h>
        !            37: #include <stdio.h>
        !            38: #include <stdlib.h>
        !            39: #include <string.h>
        !            40: 
        !            41: #include "vmm_main.h"
        !            42: #include "vmm_dlg.h"
        !            43: #include "vmm_xtrn.h"
        !            44: 
        !            45: #define MAX_EDIT_BUFF 10   /* length of string to query from edit controls */
        !            46: 
        !            47: #define SZDEFAULT_SIZE "1"  /* default number of bytes to set attributes for
        !            48:                                when setting attributes of a block,
        !            49:                                this will cause the attributes to be set for
        !            50:                                one page */
        !            51: 
        !            52: extern CHAR szWindowText[];
        !            53: 
        !            54: /*--------------------------------------------------------------*\
        !            55:  *  Global variables                                           *
        !            56: \*--------------------------------------------------------------*/
        !            57: 
        !            58: extern char szBuffer[];
        !            59: 
        !            60: extern ULONG ulFreePage;              /* First free page entry in array */
        !            61: 
        !            62: extern PAGEENTRY apgentry[MAXPAGES];  /* Application page table         */
        !            63: 
        !            64: 
        !            65: /*--------------------------------------------------------------*\
        !            66:  *  Entry point declarations                                   *
        !            67: \*--------------------------------------------------------------*/
        !            68: 
        !            69: MRESULT EXPENTRY AboutBoxWndProc(HWND hwnd, USHORT msg,
        !            70:                                  MPARAM mp1, MPARAM mp2);
        !            71: 
        !            72: VOID CheckBox(HWND hwnd, ULONG ulMask, USHORT idBox);
        !            73: ULONG QueryCheckBox(HWND hwnd, ULONG ulMask, USHORT idBox);
        !            74: 
        !            75: extern VOID VMM_Error(PSZ pszFunction, ULONG ulErrorCode);
        !            76: 
        !            77: /****************************************************************\
        !            78:  *  Routine to set the state of a checkbox                      *
        !            79:  *--------------------------------------------------------------*
        !            80:  *                                                             *
        !            81:  *  Name:   CheckBox(hwnd, ulMask, idBox)                       *
        !            82:  *                                                             *
        !            83:  * Purpose:  Sets the state of a checkbox or radio button       *
        !            84:  *                                                              *
        !            85:  *  Usage:   If ulMask is true it checks the button, otherwise  *
        !            86:  *           it unchecks the button.                            *
        !            87:  *                                                              *
        !            88:  *  Method:  Send a BM_SETCHECK message to the appropriate      *
        !            89:  *           button                                             *
        !            90:  *                                                              *
        !            91:  *  Returns: None.                                              *
        !            92:  *                                                             *
        !            93: \****************************************************************/
        !            94: 
        !            95: 
        !            96: VOID CheckBox(HWND hwnd, ULONG ulMask, USHORT idBox)
        !            97: {
        !            98:     WinSendDlgItemMsg(hwnd,
        !            99:                     idBox,
        !           100:                     BM_SETCHECK,
        !           101:                     MPFROMSHORT( ulMask ? 1 : 0),
        !           102:                     0L);
        !           103: }
        !           104: 
        !           105: /****************************************************************\
        !           106:  *  Routine to query the state of a checkbox                    *
        !           107:  *--------------------------------------------------------------*
        !           108:  *                                                             *
        !           109:  *  Name:   QueryCheckBox(hwnd, ulMask, idBox)                  *
        !           110:  *                                                             *
        !           111:  * Purpose: This routine makes querying the                     *
        !           112:  *          state of a checkbox or radio button cleaner by      *
        !           113:  *          hiding the details of sending the message to        *
        !           114:  *          the button and checking the return value.           *
        !           115:  *                                                              *
        !           116:  *  Usage:                                                      *
        !           117:  *                                                             *
        !           118:  *  Method:  Send a BM_QUERYCHECK to the control and checks     *
        !           119:  *           the return value.                                  *
        !           120:  *                                                             *
        !           121:  *  Returns: The value passed in ulMask if the button is        *
        !           122:  *           checked                                            *
        !           123:  *                                                             *
        !           124: \****************************************************************/
        !           125: 
        !           126: 
        !           127: ULONG QueryCheckBox(HWND hwnd, ULONG ulMask, USHORT idBox)
        !           128: {
        !           129:     return( (WinSendDlgItemMsg(hwnd,
        !           130:                                 idBox,
        !           131:                                 BM_QUERYCHECK,
        !           132:                                 0L,
        !           133:                                 0L) == (MRESULT) 1L) ? ulMask : 0L);
        !           134: }
        !           135: 
        !           136: 
        !           137: /****************************************************************\
        !           138:  *  Dialog procedure for the About dialog box                  *
        !           139:  *--------------------------------------------------------------*
        !           140:  *                                                             *
        !           141:  *  Name:   AboutBoxWndProc(hwnd, msg, mp1, mp2)               *
        !           142:  *                                                             *
        !           143:  *  Purpose: Processes all messages sent to the About Box      *
        !           144:  *                                                             *
        !           145:  *  Usage:  Called for each message sent to the About Box      *
        !           146:  *         dialog box.
        !           147:  *                                                             *
        !           148:  *  Method: the about box only has a button control so this    *
        !           149:  *         routine only processes WM_COMMAND messages.  Any    *
        !           150:  *         WM_COMMAND posted must have come from the Ok        *
        !           151:  *         button so we dismiss the dialog upon receiving it.  *
        !           152:  *                                                             *
        !           153:  *  Returns: Dependent upon message sent                       *
        !           154:  *                                                             *
        !           155: \****************************************************************/
        !           156: 
        !           157: MRESULT EXPENTRY AboutBoxWndProc(hwnd, msg, mp1, mp2)
        !           158: HWND hwnd;     /* handle of window */
        !           159: USHORT msg;    /* id of message */
        !           160: MPARAM mp1;    /* first message parameter */
        !           161: MPARAM mp2;    /* second message parameter */
        !           162: {
        !           163:     switch(msg)  {
        !           164:        case WM_COMMAND:
        !           165:            /* no matter what the command, close the dialog */
        !           166:            WinDismissDlg(hwnd, TRUE);
        !           167:            break;
        !           168: 
        !           169:        default:
        !           170:            return(WinDefDlgProc(hwnd, msg, mp1, mp2));
        !           171:            break;
        !           172:     }
        !           173: 
        !           174:     return 0L;
        !           175: 
        !           176: }   /* AboutBoxWndProc() */
        !           177: 
        !           178: 
        !           179: /****************************************************************\
        !           180:  *  Dialog procedure for the Allocate Memory dialog             *
        !           181:  *--------------------------------------------------------------*
        !           182:  *                                                             *
        !           183:  *  Name:   AllocMemDlgProc(hwnd, msg, mp1, mp2)                *
        !           184:  *                                                             *
        !           185:  *  Purpose: Processes all messages sent to the AllocMem        *
        !           186:  *           dialog                                            *
        !           187:  *                                                             *
        !           188:  *  Usage:  Called for each message sent to the                 *
        !           189:  *         dialog box.                                         *
        !           190:  *                                                             *
        !           191:  *  Method: a switch statement branches to the routines to be  *
        !           192:  *         performed for each message processed.  Any messages *
        !           193:  *         not specifically processed are passed to the        *
        !           194:  *         default window procedure WinDefDlgProc()            *
        !           195:  *                                                             *
        !           196:  *  Returns: Dependent upon message sent                       *
        !           197:  *                                                             *
        !           198: \****************************************************************/
        !           199: 
        !           200: MRESULT EXPENTRY AllocMemDlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
        !           201: {
        !           202: static POBJSTRUCT pObj;
        !           203: 
        !           204: switch (msg) {
        !           205:     case WM_INITDLG:
        !           206: 
        !           207:         pObj = PVOIDFROMMP(mp2);
        !           208: 
        !           209:         ltoa( (pObj->ulSize) ,(char *) szBuffer, 10);  /* radix=10 */
        !           210: 
        !           211:         WinSetDlgItemText(hwnd, IDD_EDITSIZE, szBuffer);
        !           212: 
        !           213:         CheckBox(hwnd, pObj->ulAttr & PAG_READ, IDD_READ);
        !           214:         CheckBox(hwnd, pObj->ulAttr & PAG_EXECUTE, IDD_EXECUTE);
        !           215:         CheckBox(hwnd, pObj->ulAttr & PAG_WRITE, IDD_WRITE);
        !           216:         CheckBox(hwnd, pObj->ulAttr & PAG_GUARD, IDD_GUARD);
        !           217: 
        !           218:         CheckBox(hwnd, pObj->ulAttr & PAG_COMMIT, IDD_COMMIT);
        !           219:         CheckBox(hwnd, pObj->ulAttr & OBJ_TILE, IDD_TILE);
        !           220: 
        !           221:         return(FALSE); /* Let the focus go to where the system puts it */
        !           222: 
        !           223:         break;
        !           224: 
        !           225:     case WM_COMMAND:
        !           226:         switch ((USHORT) SHORT1FROMMP(mp1)) {
        !           227:             case IDD_OK:
        !           228:                 WinQueryDlgItemText(hwnd, IDD_EDITSIZE,MAX_EDIT_BUFF, szBuffer);
        !           229: 
        !           230:                 pObj->ulSize=atol(szBuffer);
        !           231: 
        !           232:                 pObj->ulAttr = QueryCheckBox(hwnd,PAG_READ, IDD_READ) |
        !           233:                                QueryCheckBox(hwnd,PAG_EXECUTE, IDD_EXECUTE) |
        !           234:                                QueryCheckBox(hwnd,PAG_WRITE, IDD_WRITE) |
        !           235:                                QueryCheckBox(hwnd,PAG_GUARD, IDD_GUARD) |
        !           236: 
        !           237:                                QueryCheckBox(hwnd,PAG_COMMIT, IDD_COMMIT) |
        !           238:                               QueryCheckBox(hwnd,OBJ_TILE, IDD_TILE);
        !           239: 
        !           240:                 WinDismissDlg(hwnd, TRUE);
        !           241: 
        !           242:                 break;
        !           243: 
        !           244:             case IDD_CANCEL:
        !           245:                 WinDismissDlg(hwnd, FALSE);
        !           246:                 break;
        !           247:             default:
        !           248:                 break;
        !           249:             }
        !           250: 
        !           251:         break;
        !           252: 
        !           253:     default:
        !           254:         return (WinDefDlgProc(hwnd, msg, mp1, mp2));
        !           255:     }
        !           256: }
        !           257: 
        !           258: 
        !           259: 
        !           260: /****************************************************************\
        !           261:  *  Dialog procedure for the Set Memory dialog                  *
        !           262:  *--------------------------------------------------------------*
        !           263:  *                                                             *
        !           264:  *  Name:   SetMem1DlgProc(hwnd, msg, mp1, mp2)                 *
        !           265:  *                                                             *
        !           266:  *  Purpose: Processes all messages sent to the SetMem1         *
        !           267:  *           dialog                                            *
        !           268:  *                                                             *
        !           269:  *  Usage:  Called for each message sent to the                 *
        !           270:  *         dialog box.                                         *
        !           271:  *                                                             *
        !           272:  *  Method: a switch statement branches to the routines to be  *
        !           273:  *         performed for each message processed.  Any messages *
        !           274:  *         not specifically processed are passed to the        *
        !           275:  *         default window procedure WinDefDlgProc()            *
        !           276:  *                                                             *
        !           277:  *  Returns: Dependent upon message sent                       *
        !           278:  *                                                             *
        !           279: \****************************************************************/
        !           280: 
        !           281: MRESULT EXPENTRY SetMem1DlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
        !           282: {
        !           283: static POBJSTRUCT pObj;
        !           284: USHORT i;
        !           285: 
        !           286: switch (msg) {
        !           287:     case WM_INITDLG:
        !           288:         pObj = PVOIDFROMMP(mp2); /* address of buffer pointed to by pCreateParams */
        !           289: 
        !           290:         for (i=0; i<ulFreePage; i++)
        !           291:         {
        !           292:             sprintf(szBuffer, "%p",apgentry[i].pvAddress);
        !           293: 
        !           294:             WinSendDlgItemMsg(hwnd,
        !           295:                                 IDD_ADDRESS,
        !           296:                                 LM_INSERTITEM,
        !           297:                                 MPFROMSHORT(LIT_END),
        !           298:                                 MPFROMP(szBuffer));
        !           299:         }
        !           300: 
        !           301:         WinSetDlgItemText(hwnd, IDD_EDITSIZE, SZDEFAULT_SIZE);
        !           302: 
        !           303:         return(FALSE); /* Let the focus go to where the system puts it */
        !           304:         break;
        !           305: 
        !           306:     case WM_COMMAND:
        !           307:         switch ((USHORT) SHORT1FROMMP(mp1)) {
        !           308:             case IDD_OK:
        !           309:                 WinQueryDlgItemText(hwnd, IDD_ADDRESS, MAX_EDIT_BUFF, szBuffer);
        !           310: 
        !           311:                sscanf(szBuffer,"%p",&(pObj->pvAddress));
        !           312: 
        !           313:                 WinQueryDlgItemText(hwnd, IDD_EDITSIZE, MAX_EDIT_BUFF, szBuffer);
        !           314: 
        !           315:                sscanf(szBuffer,"%lu",&(pObj->ulSize));
        !           316: 
        !           317:                 WinDismissDlg(hwnd, TRUE);
        !           318: 
        !           319:                 break;
        !           320: 
        !           321:             case IDD_CANCEL:
        !           322:                 WinDismissDlg(hwnd, FALSE);
        !           323:                 break;
        !           324: 
        !           325:             default:
        !           326:                 break;
        !           327:             }
        !           328: 
        !           329:         break;
        !           330: 
        !           331:     default:
        !           332:         return (WinDefDlgProc(hwnd, msg, mp1, mp2));
        !           333:     }
        !           334: }
        !           335: 
        !           336: 
        !           337: 
        !           338: /****************************************************************\
        !           339:  *  Dialog procedure for the Set Memory dialog                  *
        !           340:  *--------------------------------------------------------------*
        !           341:  *                                                             *
        !           342:  *  Name:   SetMem2DlgProc(hwnd, msg, mp1, mp2)                 *
        !           343:  *                                                             *
        !           344:  *  Purpose: Processes all messages sent to the SetMem2         *
        !           345:  *           dialog                                            *
        !           346:  *                                                             *
        !           347:  *  Usage:  Called for each message sent to the                 *
        !           348:  *         dialog box.                                         *
        !           349:  *                                                             *
        !           350:  *  Method: a switch statement branches to the routines to be  *
        !           351:  *         performed for each message processed.  Any messages *
        !           352:  *         not specifically processed are passed to the        *
        !           353:  *         default window procedure WinDefDlgProc()            *
        !           354:  *                                                             *
        !           355:  *  Returns: Dependent upon message sent                       *
        !           356:  *                                                             *
        !           357: \****************************************************************/
        !           358: 
        !           359: MRESULT EXPENTRY SetMem2DlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
        !           360: {
        !           361: static POBJSTRUCT pObj;
        !           362: ULONG ulRegionSize,ulFlags;
        !           363: ULONG rc;
        !           364: 
        !           365: switch (msg) {
        !           366:     case WM_INITDLG:
        !           367:         pObj = PVOIDFROMMP(mp2);
        !           368: 
        !           369:         rc=DosQueryMem(pObj->pvAddress, &ulRegionSize, &ulFlags);
        !           370:         if (rc)
        !           371:         {
        !           372:             VMM_Error("DosQueryMem()", rc);
        !           373: 
        !           374:             WinDismissDlg(hwnd, FALSE);
        !           375:             return(FALSE);
        !           376:         }
        !           377: 
        !           378:         sprintf(szBuffer, "Address of memory =0x%p",pObj->pvAddress);
        !           379:         WinSetDlgItemText(hwnd, IDD_ADDRESS, szBuffer);
        !           380: 
        !           381: 
        !           382:        CheckBox(hwnd, ulFlags & PAG_READ, IDD_READ);
        !           383:        CheckBox(hwnd, ulFlags & PAG_EXECUTE, IDD_EXECUTE);
        !           384:        CheckBox(hwnd, ulFlags & PAG_WRITE, IDD_WRITE);
        !           385:        CheckBox(hwnd, ulFlags & PAG_GUARD, IDD_GUARD);
        !           386: 
        !           387:         CheckBox(hwnd, 1L, IDD_DEFAULT);
        !           388: 
        !           389:         return(FALSE); /* Let the focus go to where the system puts it */
        !           390:         break;
        !           391: 
        !           392:     case WM_CONTROL:
        !           393: 
        !           394:         switch ((USHORT) SHORT1FROMMP(mp1)) {
        !           395: 
        !           396:             case IDD_DECOMMIT:    /* Can't change attributes when de-committing */
        !           397:                 if ((USHORT) SHORT2FROMMP(mp1) == BN_CLICKED)
        !           398:                 {
        !           399:                     if (QueryCheckBox(hwnd, TRUE, IDD_DECOMMIT))
        !           400:                         {
        !           401:                             /* If we are decommitting memory, don't change
        !           402:                                any attributes */
        !           403:                             CheckBox(hwnd, 0L, IDD_READ);
        !           404:                             CheckBox(hwnd, 0L, IDD_EXECUTE);
        !           405:                             CheckBox(hwnd, 0L, IDD_WRITE);
        !           406:                             CheckBox(hwnd, 0L, IDD_GUARD);
        !           407:                         }
        !           408: 
        !           409:                     return(TRUE);   /* tell it we didn't process the message */
        !           410:                 }
        !           411: 
        !           412:                 return(TRUE);       /* tell it we didn't process the message */
        !           413: 
        !           414:                 break;
        !           415: 
        !           416: 
        !           417:             case IDD_DEFAULT:
        !           418:             case IDD_COMMIT:
        !           419: 
        !           420:                 /* For these cases, put the attributes back the way
        !           421:                    they were, this is for whenthe user clicks on de-commit,
        !           422:                    then, clicks back on default or commit since we cleared
        !           423:                    the attribute flags when they clicked on decommit */
        !           424: 
        !           425:                 if ((USHORT) SHORT2FROMMP(mp1) == BN_CLICKED)
        !           426:                 {
        !           427: 
        !           428:                     rc=DosQueryMem(pObj->pvAddress, &ulRegionSize, &ulFlags);
        !           429:                     if (rc)
        !           430:                     {
        !           431:                         VMM_Error("DosQueryMem()", rc);
        !           432: 
        !           433:                         WinDismissDlg(hwnd, FALSE);
        !           434:                         return(FALSE);
        !           435:                     }
        !           436: 
        !           437:                     CheckBox(hwnd, ulFlags & PAG_READ, IDD_READ);
        !           438:                     CheckBox(hwnd, ulFlags & PAG_EXECUTE, IDD_EXECUTE);
        !           439:                     CheckBox(hwnd, ulFlags & PAG_WRITE, IDD_WRITE);
        !           440:                     CheckBox(hwnd, ulFlags & PAG_GUARD, IDD_GUARD);
        !           441:                 }
        !           442: 
        !           443:                 return(TRUE);   /* tell it we didn't process the message */
        !           444:                 break;
        !           445: 
        !           446:             default:
        !           447:                 break;
        !           448:             }
        !           449: 
        !           450:     case WM_COMMAND:
        !           451:         switch ((USHORT) SHORT1FROMMP(mp1)) {
        !           452:             case IDD_OK:
        !           453: 
        !           454:                 pObj->ulAttr = QueryCheckBox(hwnd,PAG_READ, IDD_READ) |
        !           455:                                QueryCheckBox(hwnd,PAG_EXECUTE, IDD_EXECUTE) |
        !           456:                                QueryCheckBox(hwnd,PAG_WRITE, IDD_WRITE) |
        !           457:                                QueryCheckBox(hwnd,PAG_GUARD, IDD_GUARD) |
        !           458: 
        !           459:                                QueryCheckBox(hwnd,PAG_COMMIT, IDD_COMMIT) |
        !           460:                                QueryCheckBox(hwnd,PAG_DECOMMIT, IDD_DECOMMIT);
        !           461: 
        !           462:                 WinDismissDlg(hwnd, TRUE);
        !           463:                 return(FALSE);   /* tell system we did process the message */
        !           464:                 break;
        !           465: 
        !           466:             case IDD_CANCEL:
        !           467:                 WinDismissDlg(hwnd, FALSE);
        !           468:                 return(FALSE);   /* tell system we did process the message */
        !           469:                 break;
        !           470: 
        !           471:             default:
        !           472:                 return(TRUE);   /* tell it we didn't process the message */
        !           473:                 break;
        !           474:             }
        !           475: 
        !           476:         break;
        !           477: 
        !           478:     default:
        !           479:         return (WinDefDlgProc(hwnd, msg, mp1, mp2));
        !           480:     }
        !           481: }
        !           482: 
        !           483: 
        !           484: /****************************************************************\
        !           485:  *  Dialog procedure for the Read Memory dialog                 *
        !           486:  *--------------------------------------------------------------*
        !           487:  *                                                             *
        !           488:  *  Name:   ReadMemDlgProc(hwnd, msg, mp1, mp2)                 *
        !           489:  *                                                             *
        !           490:  *  Purpose: Processes all messages sent to the Read Memory     *
        !           491:  *           dialog                                            *
        !           492:  *                                                             *
        !           493:  *  Usage:  Called for each message sent to the                 *
        !           494:  *         dialog box.                                         *
        !           495:  *                                                             *
        !           496:  *  Method: a switch statement branches to the routines to be  *
        !           497:  *         performed for each message processed.  Any messages *
        !           498:  *         not specifically processed are passed to the        *
        !           499:  *         default window procedure WinDefDlgProc()            *
        !           500:  *                                                             *
        !           501:  *  Returns: Dependent upon message sent                       *
        !           502:  *                                                             *
        !           503: \****************************************************************/
        !           504: 
        !           505: MRESULT EXPENTRY ReadMemDlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
        !           506: {
        !           507: static POBJSTRUCT pObj;
        !           508: 
        !           509: switch (msg) {
        !           510:     case WM_INITDLG:
        !           511:         pObj = PVOIDFROMMP(mp2);
        !           512: 
        !           513:         return(FALSE); /* Let the focus go to where the system puts it */
        !           514: 
        !           515:         break;
        !           516: 
        !           517:     case WM_COMMAND:
        !           518:         switch ((USHORT) SHORT1FROMMP(mp1)) {
        !           519:             case IDD_OK:
        !           520:                 WinQueryDlgItemText(hwnd, IDD_ADDRESS, MAX_EDIT_BUFF, szBuffer);
        !           521: 
        !           522:                sscanf(szBuffer,"%p",&(pObj->pvAddress));
        !           523: 
        !           524:                 WinDismissDlg(hwnd, TRUE);
        !           525:                 break;
        !           526: 
        !           527:             case IDD_CANCEL:
        !           528:                 WinDismissDlg(hwnd, FALSE);
        !           529:                 break;
        !           530: 
        !           531:             default:
        !           532:                 break;
        !           533:             }
        !           534: 
        !           535:         break;
        !           536: 
        !           537:     default:
        !           538:         return (WinDefDlgProc(hwnd, msg, mp1, mp2));
        !           539:     }
        !           540: }
        !           541: 
        !           542: 
        !           543: 
        !           544: 
        !           545: /****************************************************************\
        !           546:  *  Dialog procedure for the Write Memory dialog                *
        !           547:  *--------------------------------------------------------------*
        !           548:  *                                                             *
        !           549:  *  Name:   WriteMemDlgProc(hwnd, msg, mp1, mp2)                *
        !           550:  *                                                             *
        !           551:  *  Purpose: Processes all messages sent to the WriteMem        *
        !           552:  *           dialog                                            *
        !           553:  *                                                             *
        !           554:  *  Usage:  Called for each message sent to the                 *
        !           555:  *         dialog box.                                         *
        !           556:  *                                                             *
        !           557:  *  Method: a switch statement branches to the routines to be  *
        !           558:  *         performed for each message processed.  Any messages *
        !           559:  *         not specifically processed are passed to the        *
        !           560:  *         default window procedure WinDefDlgProc()            *
        !           561:  *                                                             *
        !           562:  *  Returns: Dependent upon message sent                       *
        !           563:  *                                                             *
        !           564: \****************************************************************/
        !           565: 
        !           566: MRESULT EXPENTRY WriteMemDlgProc(HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
        !           567: {
        !           568: PVOID  pvMemAddress;
        !           569: 
        !           570: switch (msg) {
        !           571:     case WM_INITDLG:
        !           572:         return(FALSE); /* Let the the focus go to where the system puts it */
        !           573:         break;
        !           574: 
        !           575:     case WM_COMMAND:
        !           576:         switch ((USHORT) SHORT1FROMMP(mp1)) {
        !           577:             case IDD_OK:
        !           578:                 WinQueryDlgItemText(hwnd, IDD_ADDRESS, MAX_EDIT_BUFF, szBuffer);
        !           579: 
        !           580:                 sscanf(szBuffer,"%p",&pvMemAddress);
        !           581: 
        !           582:                 WinQueryDlgItemText(hwnd, IDD_DATA, MAX_EDIT_BUFF, szBuffer);
        !           583: 
        !           584:                 strcpy(pvMemAddress, szBuffer);  /* let 'em go for it.
        !           585:                                                     it may cause a GP fault */
        !           586: 
        !           587:                 WinDismissDlg(hwnd, TRUE);
        !           588: 
        !           589:                 break;
        !           590: 
        !           591:             case IDD_CANCEL:
        !           592:                 WinDismissDlg(hwnd, FALSE);
        !           593:                 break;
        !           594: 
        !           595:             default:
        !           596:                 break;
        !           597:             }
        !           598: 
        !           599:         break;
        !           600: 
        !           601:     default:
        !           602:         return (WinDefDlgProc(hwnd, msg, mp1, mp2));
        !           603:     }
        !           604: }
        !           605: 
        !           606: 
        !           607: /****************************************************************\
        !           608:  *  Dialog procedure for the Free Memory dialog                *
        !           609:  *--------------------------------------------------------------*
        !           610:  *                                                             *
        !           611:  *  Name:   FreeMemDlgProc(hwnd, msg, mp1, mp2)                *
        !           612:  *                                                             *
        !           613:  *  Purpose: Processes all messages sent to the FreeMem        *
        !           614:  *           dialog                                            *
        !           615:  *                                                             *
        !           616:  *  Usage:  Called for each message sent to the Free Memory     *
        !           617:  *         dialog box.                                         *
        !           618:  *                                                             *
        !           619:  *  Method: a switch statement branches to the routines to be  *
        !           620:  *         performed for each message processed.  Any messages *
        !           621:  *         not specifically processed are passed to the        *
        !           622:  *         default window procedure WinDefDlgProc()            *
        !           623:  *                                                             *
        !           624:  *  Returns: Dependent upon message sent                       *
        !           625:  *                                                             *
        !           626: \****************************************************************/
        !           627: MRESULT EXPENTRY FreeMemDlgProc(HWND hwnd, USHORT msg,
        !           628:                                     MPARAM mp1, MPARAM mp2)
        !           629: {
        !           630: static POBJSTRUCT pObj;
        !           631: 
        !           632: switch (msg) {
        !           633:     case WM_INITDLG:
        !           634:         pObj = PVOIDFROMMP(mp2);
        !           635: 
        !           636:         return(FALSE); /* Let the the focus go to where the system puts it */
        !           637:         break;
        !           638: 
        !           639:     case WM_COMMAND:
        !           640:         switch ((USHORT) SHORT1FROMMP(mp1)) {
        !           641:             case IDD_OK:
        !           642:                 WinQueryDlgItemText(hwnd, IDD_ADDRESS, MAX_EDIT_BUFF, szBuffer);
        !           643: 
        !           644:                sscanf(szBuffer,"%p",&(pObj->pvAddress));
        !           645: 
        !           646:                 WinDismissDlg(hwnd, TRUE);
        !           647: 
        !           648:                 break;
        !           649: 
        !           650:             case IDD_CANCEL:
        !           651:                 WinDismissDlg(hwnd, FALSE);
        !           652:                 break;
        !           653: 
        !           654:             default:
        !           655:                 break;
        !           656:             }
        !           657: 
        !           658:         break;
        !           659: 
        !           660:     default:
        !           661:         return (WinDefDlgProc(hwnd, msg, mp1, mp2));
        !           662:     }
        !           663: }

unix.superglobalmegacorp.com

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