Annotation of os232sdk/toolkt20/c/samples/iniedit/dlgproc.c, revision 1.1

1.1     ! root        1: /******************************* Module Header ******************************\
        !             2: * Module Name: DlgProc.c
        !             3: *
        !             4: * Created by Microsoft, IBM Corporation 1990
        !             5: *
        !             6: *
        !             7: * System Test Application
        !             8: *
        !             9: *
        !            10: \***************************************************************************/
        !            11: 
        !            12: 
        !            13: #define LINT_ARGS                           // Include needed parts of PM
        !            14: #define INCL_WININPUT                       //    definitions
        !            15: #define INCL_WINSYS
        !            16: #define INCL_WINMESSAGEMGR
        !            17: #define INCL_WINBUTTONS
        !            18: #define INCL_WINPOINTERS
        !            19: #define INCL_WINHEAP
        !            20: #define INCL_WINSHELLDATA
        !            21: #define INCL_WINMENUS
        !            22: #define INCL_WINFRAMEMGR
        !            23: #define INCL_WINLISTBOXES
        !            24: #define INCL_WINENTRYFIELDS
        !            25: #define INCL_WINDIALOGS
        !            26: #define INCL_GPIBITMAPS
        !            27: #define INCL_GPIREGIONS
        !            28: #define INCL_GPILCIDS
        !            29: #define INCL_GPIPRIMITIVES
        !            30: #define INCL_DEV
        !            31: 
        !            32: #include <string.h>
        !            33: #include <stdio.h>
        !            34: 
        !            35: #include <os2.h>
        !            36: 
        !            37: #include "IniEdit.h"
        !            38: 
        !            39: 
        !            40: /******************************* Constants *********************************/
        !            41: 
        !            42: #define BUF_SIZE 132
        !            43: 
        !            44: 
        !            45: /******************************** Globals **********************************/
        !            46: 
        !            47: static CHAR   szSearch[BUF_SIZE] = { 0 };           // Current search string
        !            48: static USHORT usLastIndex = 0;                      // Last Searched Item
        !            49: 
        !            50: /******************************* Externals *********************************/
        !            51: 
        !            52: extern USHORT        cAppNames;                     // see iniedit.c
        !            53: extern HWND          hwndList;
        !            54: extern PGROUPSTRUCT  pGroups;
        !            55: extern HAB           habIniEdit;
        !            56: extern HWND          FocusWindow;
        !            57: 
        !            58: 
        !            59: /****************************** Function Header ****************************\
        !            60: *
        !            61: * SearchWndProc
        !            62: *
        !            63: *
        !            64: * Handles the Search Dialog Box messages
        !            65: *
        !            66: \***************************************************************************/
        !            67: 
        !            68: MRESULT EXPENTRY SearchWndProc(HWND hwndDialog, USHORT msg,
        !            69:         MPARAM mp1, MPARAM mp2)
        !            70: {
        !            71:     HWND   hwndText;                            // Current Text Window
        !            72: 
        !            73: 
        !            74:     switch (msg)
        !            75:         {
        !            76: 
        !            77:         case WM_INITDLG:
        !            78:             hwndText = WinWindowFromID( hwndDialog, IDDI_SEARCH_TEXT );
        !            79:             WinSetWindowText(hwndText, szSearch);
        !            80:             WinSendMsg( hwndText, EM_SETSEL,
        !            81:                     MPFROM2SHORT(0, strlen(szSearch)), (MPARAM)0 );
        !            82: 
        !            83:             break;
        !            84: 
        !            85:         case WM_COMMAND:
        !            86:             switch( LOUSHORT( mp1 ) )
        !            87:                 {
        !            88: 
        !            89:                 case IDDI_SEARCH_OK:
        !            90:                     hwndText = WinWindowFromID( hwndDialog, IDDI_SEARCH_TEXT );
        !            91:                     WinQueryWindowText( hwndText, BUF_SIZE, szSearch );
        !            92:                     WinDismissDlg( hwndDialog, 0 );
        !            93: 
        !            94:                     if( (usLastIndex = (INT)WinSendMsg( hwndList, LM_SEARCHSTRING,
        !            95:                             MPFROM2SHORT( LSS_SUBSTRING, LIT_FIRST),
        !            96:                             MPFROMP( szSearch )) ) != LIT_NONE )
        !            97:                         {
        !            98:                         WinSendMsg( hwndList, LM_SELECTITEM,
        !            99:                                 MPFROM2SHORT( (usLastIndex), NULL),
        !           100:                                 MPFROM2SHORT( TRUE, NULL ) );
        !           101:                         }
        !           102:                     else  /* not found */
        !           103:                         {
        !           104:                         usLastIndex = LIT_FIRST;
        !           105:                         WinAlarm( HWND_DESKTOP, 0);
        !           106:                         }
        !           107:                     break;
        !           108: 
        !           109:                 case IDDI_SEARCH_NEXT:
        !           110:                     FindNext();
        !           111:                     break;
        !           112: 
        !           113:                 default:
        !           114:                     return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           115:                     break;
        !           116:                 }
        !           117: 
        !           118:         default:
        !           119:             return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           120:             break;
        !           121:         }
        !           122: 
        !           123:     return 0L;
        !           124: 
        !           125: }  /* SearchWndProc */
        !           126: 
        !           127: 
        !           128: /****************************** Function Header ****************************\
        !           129: *
        !           130: * FindNext
        !           131: *
        !           132: *
        !           133: * Finds the next instance of the current search string starting from the
        !           134: * Last searched position
        !           135: *
        !           136: \***************************************************************************/
        !           137: 
        !           138: VOID FindNext()
        !           139: {
        !           140:    if( (usLastIndex = (INT)WinSendMsg( hwndList, LM_SEARCHSTRING,
        !           141:            MPFROM2SHORT( LSS_SUBSTRING, usLastIndex),
        !           142:            MPFROMP( szSearch )) ) != LIT_NONE )
        !           143:        {
        !           144:        WinSendMsg( hwndList, LM_SELECTITEM,
        !           145:                MPFROM2SHORT( (usLastIndex), NULL),
        !           146:                MPFROM2SHORT( TRUE, NULL ) );
        !           147:        }
        !           148:    else   /* alarm if not found */
        !           149:        WinAlarm( HWND_DESKTOP, 0);
        !           150: 
        !           151: }  /* FindNext */
        !           152: 
        !           153: 
        !           154: /****************************** Function Header ****************************\
        !           155: *
        !           156: * AddKeyWndProc
        !           157: *
        !           158: *
        !           159: * Handles the AddKey Dialog Box messages
        !           160: * Will facilitate adding new keys for a given App Name
        !           161: *
        !           162: \***************************************************************************/
        !           163: 
        !           164: MRESULT EXPENTRY AddKeyWndProc(HWND hwndDialog, USHORT msg,
        !           165:         MPARAM mp1, MPARAM mp2)
        !           166: {
        !           167:     HWND   hwndTextApp;                         // Handle for App Text Window
        !           168:     HWND   hwndTextKey;
        !           169:     HWND   hwndTextValue;
        !           170:     CHAR   szApp[BUF_SIZE];                     // String Contents
        !           171:     CHAR   szKey[BUF_SIZE];
        !           172:     CHAR   szValue[BUF_SIZE];
        !           173: 
        !           174: 
        !           175:     switch (msg)
        !           176:         {
        !           177:         case WM_INITDLG:
        !           178:             WinSendDlgItemMsg(hwndDialog, IDDI_ADD_KEY_TEXT_APP, EM_SETTEXTLIMIT,
        !           179:                     MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           180:             WinSendDlgItemMsg(hwndDialog, IDDI_ADD_KEY_TEXT_KEY, EM_SETTEXTLIMIT,
        !           181:                     MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           182:             WinSendDlgItemMsg(hwndDialog, IDDI_ADD_KEY_TEXT_VAL, EM_SETTEXTLIMIT,
        !           183:                     MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           184:             break;
        !           185:         case WM_COMMAND:
        !           186:             switch( LOUSHORT( mp1 ) )
        !           187:                 {
        !           188: 
        !           189:                 case IDDI_ADD_KEY_OK:
        !           190:                     hwndTextApp = WinWindowFromID( hwndDialog, IDDI_ADD_KEY_TEXT_APP );
        !           191:                     WinQueryWindowText( hwndTextApp, BUF_SIZE, szApp );
        !           192: 
        !           193:                     hwndTextKey = WinWindowFromID( hwndDialog, IDDI_ADD_KEY_TEXT_KEY );
        !           194:                     WinQueryWindowText( hwndTextKey, BUF_SIZE, szKey );
        !           195: 
        !           196:                     hwndTextValue = WinWindowFromID( hwndDialog, IDDI_ADD_KEY_TEXT_VAL );
        !           197:                     WinQueryWindowText( hwndTextValue, BUF_SIZE, szValue );
        !           198: 
        !           199:                     WinDismissDlg( hwndDialog, 0 );
        !           200: 
        !           201:                     /* if the App is NULL forget it */
        !           202:                     if( *szApp == (CHAR)0 )
        !           203:                         {
        !           204:                         break;
        !           205:                         }
        !           206: 
        !           207:                     /* if the Key is NULL forget it */
        !           208:                     if( *szKey == (CHAR)0 )
        !           209:                         {
        !           210:                         break;
        !           211:                         }
        !           212: 
        !           213:                     /* if the Value is NULL forget it */
        !           214:                     if( *szValue == (CHAR)0 )
        !           215:                         {
        !           216:                         break;
        !           217:                         }
        !           218: 
        !           219:                    if( !PrfWriteProfileString( HINI_USERPROFILE, szApp, szKey, szValue ) )
        !           220:                         ;
        !           221:                     break;
        !           222: 
        !           223:                 default:
        !           224:                     return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           225:                     break;
        !           226:                 }
        !           227: 
        !           228:         default:
        !           229:             return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           230:             break;
        !           231:         }
        !           232: 
        !           233:     return 0L;
        !           234: 
        !           235: }  /* AddKeyWndProc */
        !           236: 
        !           237: 
        !           238: /****************************** Function Header ****************************\
        !           239: *
        !           240: * ChangeKeyWndProc
        !           241: *
        !           242: *
        !           243: * Handles the ChangeKey Dialog Box messages
        !           244: * Will facilitate changing a key's value given an app, key and new value
        !           245: *
        !           246: \***************************************************************************/
        !           247: 
        !           248: MRESULT EXPENTRY ChangeKeyWndProc(HWND hwndDialog, USHORT msg,
        !           249:         MPARAM mp1, MPARAM mp2)
        !           250: {
        !           251:     HWND     hwndTextApp;                       // Handle for App Text Window
        !           252:     HWND     hwndTextKey;
        !           253:     HWND     hwndTextVal;
        !           254:     CHAR     szApp[BUF_SIZE];                   // String Contents
        !           255:     CHAR     szKey[BUF_SIZE];
        !           256:     CHAR     szVal[BUF_SIZE];
        !           257: 
        !           258: 
        !           259:     switch (msg)
        !           260:         {
        !           261:         case WM_INITDLG:
        !           262:             if( FocusWindow )
        !           263:                 {
        !           264: 
        !           265:                 FocusWindow = WinWindowFromID( hwndDialog, IDDI_CHANGE_KEY_TEXT_VAL );
        !           266:                 WinSetFocus( HWND_DESKTOP, FocusWindow);
        !           267:                 WinQueryWindowText( FocusWindow, BUF_SIZE, szVal );
        !           268: 
        !           269:                 FocusWindow = (HWND)NULL;
        !           270: 
        !           271:                 return( (MRESULT)TRUE );
        !           272:                 } else {
        !           273:                 WinSendDlgItemMsg(hwndDialog, IDDI_CHANGE_KEY_TEXT_APP, EM_SETTEXTLIMIT,
        !           274:                         MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           275:                 WinSendDlgItemMsg(hwndDialog, IDDI_CHANGE_KEY_TEXT_KEY, EM_SETTEXTLIMIT,
        !           276:                         MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           277:                 WinSendDlgItemMsg(hwndDialog, IDDI_CHANGE_KEY_TEXT_VAL, EM_SETTEXTLIMIT,
        !           278:                         MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           279:                 }
        !           280:             break;
        !           281: 
        !           282:         case WM_COMMAND:
        !           283:             switch( LOUSHORT( mp1 ) )
        !           284:                 {
        !           285: 
        !           286:                 case IDDI_CHANGE_KEY_OK:
        !           287:                     hwndTextApp = WinWindowFromID( hwndDialog, IDDI_CHANGE_KEY_TEXT_APP );
        !           288:                     WinQueryWindowText( hwndTextApp, BUF_SIZE, szApp );
        !           289: 
        !           290:                     hwndTextKey = WinWindowFromID( hwndDialog, IDDI_CHANGE_KEY_TEXT_KEY );
        !           291:                     WinQueryWindowText( hwndTextKey, BUF_SIZE, szKey );
        !           292: 
        !           293:                     hwndTextVal = WinWindowFromID( hwndDialog, IDDI_CHANGE_KEY_TEXT_VAL );
        !           294:                     WinQueryWindowText( hwndTextVal, BUF_SIZE, szVal );
        !           295: 
        !           296: 
        !           297:                     WinDismissDlg( hwndDialog, IDDI_CHANGE_KEY_OK );
        !           298: 
        !           299:                     /* if the App is NULL forget it */
        !           300:                     if( *szApp == (CHAR)0 )
        !           301:                         {
        !           302:                         break;
        !           303:                         }
        !           304: 
        !           305:                     /* if the Key is NULL forget it */
        !           306:                     if( *szKey == (CHAR)0 )
        !           307:                         {
        !           308:                         break;
        !           309:                         }
        !           310: 
        !           311:                     /* if the Value is NULL forget it */
        !           312:                     if( *szVal == (CHAR)0 )
        !           313:                         {
        !           314:                         break;
        !           315:                         }
        !           316: 
        !           317: 
        !           318:                    if( !PrfWriteProfileString( HINI_USERPROFILE, szApp, szKey, szVal ) )
        !           319: 
        !           320:                     break;
        !           321: 
        !           322:                 default:
        !           323:                     return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           324:                     break;
        !           325:                 }
        !           326: 
        !           327:         default:
        !           328:             return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           329:             break;
        !           330:         }
        !           331: 
        !           332:     return 0L;
        !           333: 
        !           334: }  /* ChangeKeyWndProc */
        !           335: 
        !           336: 
        !           337: /****************************** Function Header ****************************\
        !           338: *
        !           339: * DelKeyWndProc
        !           340: *
        !           341: *
        !           342: * Handles the DelKey Dialog Box messages
        !           343: * Will facilitate deleting a key value given an app and the key
        !           344: *
        !           345: \***************************************************************************/
        !           346: 
        !           347: MRESULT EXPENTRY DelKeyWndProc(HWND hwndDialog, USHORT msg,
        !           348:         MPARAM mp1, MPARAM mp2)
        !           349: {
        !           350:     HWND   hwndTextApp;                         // Handle for App Text Window
        !           351:     HWND   hwndTextKey;
        !           352:     CHAR   szApp[BUF_SIZE];                     // String Contents
        !           353:     CHAR   szKey[BUF_SIZE];
        !           354: 
        !           355: 
        !           356:     switch (msg)
        !           357:         {
        !           358:         case WM_INITDLG:
        !           359:             WinSendDlgItemMsg(hwndDialog, IDDI_DEL_KEY_TEXT_APP, EM_SETTEXTLIMIT,
        !           360:                     MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           361:             WinSendDlgItemMsg(hwndDialog, IDDI_DEL_KEY_TEXT_KEY, EM_SETTEXTLIMIT,
        !           362:                     MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           363:             break;
        !           364:         case WM_COMMAND:
        !           365:             switch( LOUSHORT( mp1 ) )
        !           366:                 {
        !           367: 
        !           368:                 case IDDI_DEL_KEY_OK:
        !           369:                     hwndTextApp = WinWindowFromID( hwndDialog, IDDI_DEL_KEY_TEXT_APP );
        !           370:                     WinQueryWindowText( hwndTextApp, BUF_SIZE, szApp );
        !           371: 
        !           372:                     hwndTextKey = WinWindowFromID( hwndDialog, IDDI_DEL_KEY_TEXT_KEY );
        !           373:                     WinQueryWindowText( hwndTextKey, BUF_SIZE, szKey );
        !           374: 
        !           375: 
        !           376:                     WinDismissDlg( hwndDialog, 0 );
        !           377: 
        !           378:                     /* if the App is NULL forget it */
        !           379:                     if( *szApp == (CHAR)0 )
        !           380:                         {
        !           381:                         break;
        !           382:                         }
        !           383: 
        !           384:                     /* if the Key is NULL forget it */
        !           385:                     if( *szKey == (CHAR)0 )
        !           386:                         {
        !           387:                         break;
        !           388:                         }
        !           389: 
        !           390: 
        !           391:                    if( !PrfWriteProfileString( HINI_USERPROFILE, szApp, szKey, (PCHAR)NULL ) )
        !           392:                         ;
        !           393:                     break;
        !           394: 
        !           395:                 default:
        !           396:                     return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           397:                     break;
        !           398:                 }
        !           399: 
        !           400:         default:
        !           401:             return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           402:             break;
        !           403:         }
        !           404: 
        !           405:     return 0L;
        !           406: 
        !           407: }  /* DelKeyProc */
        !           408: 
        !           409: 
        !           410: /****************************** Function Header ****************************\
        !           411: *
        !           412: * DelAppWndProc
        !           413: *
        !           414: *
        !           415: * Handles the DelApp Dialog Box messages
        !           416: * Will facilitate deleting all keys from a given app name
        !           417: *
        !           418: \***************************************************************************/
        !           419: 
        !           420: MRESULT EXPENTRY DelAppWndProc(HWND hwndDialog, USHORT msg,
        !           421:         MPARAM mp1, MPARAM mp2)
        !           422: {
        !           423:     HWND   hwndTextApp;                         // App Name Window
        !           424:     CHAR   szApp[BUF_SIZE];                     // String Contents of Window
        !           425: 
        !           426: 
        !           427:     switch (msg)
        !           428:         {
        !           429:         case WM_INITDLG:
        !           430:             WinSendDlgItemMsg(hwndDialog, IDDI_DEL_APP_TEXT_APP, EM_SETTEXTLIMIT,
        !           431:                     MPFROMSHORT(MAX_STRING_LEN), 0L);
        !           432:             break;
        !           433: 
        !           434:         case WM_COMMAND:
        !           435:             switch( LOUSHORT( mp1 ) )
        !           436:                 {
        !           437: 
        !           438:                 case IDDI_DEL_APP_OK:
        !           439:                     hwndTextApp = WinWindowFromID( hwndDialog, IDDI_DEL_APP_TEXT_APP );
        !           440:                     WinQueryWindowText( hwndTextApp, BUF_SIZE, szApp );
        !           441: 
        !           442:                     WinDismissDlg( hwndDialog, 0 );
        !           443: 
        !           444:                     /* if the App is NULL forget it */
        !           445:                     if( *szApp == (CHAR)0 )
        !           446:                         {
        !           447:                         break;
        !           448:                         }
        !           449: 
        !           450:                    if( !PrfWriteProfileString( HINI_USERPROFILE, szApp, (PCHAR)NULL, (PCHAR)NULL ) )
        !           451:                         ;
        !           452: 
        !           453:                     break;
        !           454: 
        !           455:                 default:
        !           456:                     return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           457:                     break;
        !           458:                 }
        !           459: 
        !           460:         default:
        !           461:             return WinDefDlgProc(hwndDialog, msg, mp1, mp2);
        !           462:             break;
        !           463:         }
        !           464: 
        !           465:     return 0L;
        !           466: 
        !           467: }  /* DelAppWndProc */
        !           468: 

unix.superglobalmegacorp.com

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