Annotation of pmsdk/samples/spy/options.c, revision 1.1.1.1

1.1       root        1: /***************************************************************************\
                      2: * options.c - Spy code for several options type dialogs
                      3: *
                      4: * Created by Microsoft Corporation, 1989
                      5: \***************************************************************************/
                      6: 
                      7: #define        INCL_WINBUTTONS
                      8: #define        INCL_WINDIALOGS
                      9: #define        INCL_WINHEAP            /* needed for spy.h */
                     10: #define        INCL_WINLISTBOXES
                     11: #define        INCL_WINMESSAGEMGR
                     12: #define        INCL_WINPOINTERS        /* needed for spy.h */
                     13: #include <os2.h>
                     14: #include <spyhook.h>
                     15: #include <stdio.h>
                     16: #include <stdlib.h>
                     17: #include <string.h>
                     18: #include <time.h>
                     19: #include "spy.h"
                     20: 
                     21: /* Prototypes */
                     22: MRESULT CALLBACK SpyOutputsDlgProc(HWND, USHORT, MPARAM, MPARAM);
                     23: MRESULT CALLBACK SpySaveListDlgProc(HWND, USHORT, MPARAM, MPARAM);
                     24: MRESULT CALLBACK AboutWndProc(HWND, USHORT, MPARAM, MPARAM);
                     25: 
                     26: /***************************************************************************\
                     27: * MRESULT CALLBACK SpyOutputsDlgProc (hwnd, msg, mp1, mp2)
                     28: \***************************************************************************/
                     29: MRESULT CALLBACK SpyOutputsDlgProc(hwnd, msg, mp1, mp2)
                     30: HWND            hwnd;
                     31: USHORT          msg;
                     32: MPARAM          mp1;
                     33: MPARAM          mp2;
                     34: {
                     35:     USHORT      wAction;
                     36: 
                     37:     switch (msg) {
                     38: 
                     39:     case WM_INITDLG:
                     40:         /*
                     41:          * Now initialize the output options in the dialog
                     42:          */
                     43:         WinSendDlgItemMsg(hwnd, DID_WINDOW, BM_SETCHECK,
                     44:             (MPARAM)spyopt.fWindow, 0L);
                     45:         WinSendDlgItemMsg(hwnd, DID_FILE, BM_SETCHECK,
                     46:             (MPARAM)spyopt.fFile, 0L);
                     47: 
                     48:         WinSetDlgItemShort(hwnd, DID_WINDOWLINES, spyopt.cWindowLines, FALSE);
                     49:         WinSetDlgItemText(hwnd, DID_FILENAME, spystr.szFileName);
                     50: 
                     51: 
                     52:         break;
                     53: 
                     54:     case WM_COMMAND:
                     55:         switch (SHORT1FROMMP(mp1)) {
                     56:         case DID_OK:
                     57: 
                     58:             /*
                     59:              * Now retrieve the output options from the
                     60:              * dialog
                     61:              */
                     62:             spyopt.fWindow = (BOOL)WinSendDlgItemMsg(hwnd,
                     63:                 DID_WINDOW, BM_QUERYCHECK, 0L, 0L);
                     64:             spyopt.fFile = (BOOL)WinSendDlgItemMsg(hwnd,
                     65:                 DID_FILE, BM_QUERYCHECK, 0L, 0L);
                     66: 
                     67:             WinQueryDlgItemShort(hwnd, DID_WINDOWLINES, &spyopt.cWindowLines, FALSE);
                     68:             WinQueryDlgItemText(hwnd, DID_FILENAME,
                     69:                 sizeof(spystr.szFileName), spystr.szFileName);
                     70: 
                     71:             /*
                     72:              * Now take care of file operations
                     73:              * If a file is already active, we will continue to use it, and
                     74:              * ignore the case where the user may have changed file names
                     75:              * Will truncate any file.
                     76:              */
                     77:             if (spyopt.fFile) {
                     78:                  if (spyopt.hfileSpy == NULL)
                     79:                     if (DosOpen((PSZ)spystr.szFileName, &spyopt.hfileSpy,
                     80:                             (USHORT far *)&wAction, 0L, 0,
                     81:                             0x0012, 0x00C1, 0L) != 0)
                     82:                         spyopt.hfileSpy = NULL; /* Failed on open */
                     83:             } else {
                     84:                 if (spyopt.hfileSpy != NULL) {
                     85:                     /* file open, not outputing, close it now */
                     86:                     DosClose (spyopt.hfileSpy);
                     87:                     spyopt.hfileSpy = NULL;
                     88:                 }
                     89:             }
                     90:             /* Fall through to DID_CANCEL */
                     91:         case DID_CANCEL:
                     92:             /* Now dismiss the dialog */
                     93:             WinDismissDlg(hwnd, SHORT1FROMMP(mp1));
                     94:             break;
                     95:         }
                     96:         break;
                     97: 
                     98:     default:
                     99:         return(WinDefDlgProc(hwnd, msg, mp1, mp2));
                    100:         break;
                    101:     }
                    102:     return 0L;
                    103: }
                    104: 
                    105: 
                    106: 
                    107: 
                    108: /***************************************************************************\
                    109: * MRESULT CALLBACK SpySaveListDlgProc(hwnd, msg, mp1, mp2)
                    110: *
                    111: * The Spy Windows Dialog procedure
                    112: \***************************************************************************/
                    113: MRESULT CALLBACK SpySaveListDlgProc(hwnd, msg, mp1, mp2)
                    114: HWND hwnd;
                    115: USHORT msg;
                    116: MPARAM mp1;
                    117: MPARAM mp2;
                    118: {
                    119:     HFILE   hfileOut;
                    120:     char    szTemp[100];
                    121:     char    szTime[10];
                    122:     char    szDate[10];
                    123:     SHORT   cItems;
                    124:     SHORT   iItem;
                    125:     USHORT  cch;
                    126:     USHORT  cchWritten;
                    127:     USHORT  wAction;
                    128:     ULONG   lTemp;
                    129: 
                    130:     switch (msg) {
                    131: 
                    132:     case WM_INITDLG:
                    133:         WinSendDlgItemMsg(hwnd, DID_APPEND, BM_SETCHECK,
                    134:             (MPARAM)spyopt.fAppend, 0L);
                    135:         /* Initialize the dialog items */
                    136:         WinSetDlgItemText(hwnd, DID_FILENAME, spystr.szSaveFileName);
                    137:         break;
                    138: 
                    139:     case WM_COMMAND:
                    140:         switch (SHORT1FROMMP(mp1)) {
                    141:         case DID_OK:
                    142:             /*
                    143:              * Get the file name, and try to open the file,
                    144:              * Then loop through and dump the listbox contents to the
                    145:              * file.
                    146:              */
                    147:             spyopt.fAppend = (BOOL)WinSendDlgItemMsg(hwnd,
                    148:                 DID_APPEND, BM_QUERYCHECK, 0L, 0L);
                    149: 
                    150:             WinQueryDlgItemText(hwnd, DID_FILENAME,
                    151:                 sizeof(spystr.szSaveFileName), spystr.szSaveFileName);
                    152: 
                    153:             if (DosOpen((PSZ)spystr.szSaveFileName, (HFILE far *)&hfileOut,
                    154:                     (USHORT far *)&wAction, 0L, 0,
                    155:                     spyopt.fAppend? 0x0011 : 0x0012, 0x00C1, 0L) == 0) {
                    156: 
                    157:                 /* If append, get to the end of the file */
                    158:                 if (spyopt.fAppend)
                    159:                     DosChgFilePtr(hfileOut, 0L, 2, (PULONG)&lTemp);
                    160: 
                    161:                 /* Get count of items */
                    162:                 cItems = (SHORT)WinSendMsg(hwndSpyList, LM_QUERYITEMCOUNT,
                    163:                             0L, 0L);
                    164: 
                    165:                 /* Write out a title block to the file */
                    166:                 _strdate(szDate);
                    167:                 _strtime(szTime);
                    168:                 DosWrite(hfileOut,
                    169:                         (PSZ)"***************************************\r\n",
                    170:                                 41, (PUSHORT)&cchWritten);
                    171:                 cch = sprintf(szTemp, "* Spy: %-10s %-10s          *\r\n",
                    172:                     szDate, szTime);
                    173:                 DosWrite(hfileOut, (PSZ)szTemp, cch, (PUSHORT)&cchWritten);
                    174: 
                    175:                 DosWrite(hfileOut,
                    176:                         (PSZ)"***************************************\r\n",
                    177:                                 41, (PUSHORT)&cchWritten);
                    178: 
                    179: 
                    180:                         /* Now output the list to the file */
                    181:                 for (iItem = 0; iItem < cItems; iItem++) {
                    182:                     cch = (SHORT)WinSendMsg(hwndSpyList, LM_QUERYITEMTEXT,
                    183:                             MPFROM2SHORT(iItem, sizeof(szTemp)),
                    184:                             (MPARAM)(PSZ)szTemp);
                    185:                     /* Add Newline at end of string */
                    186:                     szTemp[cch++] = '\r';
                    187:                     szTemp[cch++] = '\n';
                    188:                     szTemp[cch] = '\0';
                    189:                     DosWrite(hfileOut, (PSZ)szTemp, cch,
                    190:                             (PUSHORT)&cchWritten);
                    191:                 }
                    192:                 DosClose(hfileOut);
                    193:             }
                    194: 
                    195:         case DID_CANCEL:
                    196:             /* Now dismiss the dialog */
                    197:             WinDismissDlg(hwnd, SHORT1FROMMP(mp1));
                    198:             break;
                    199:         break;
                    200:     }
                    201: 
                    202:     default:
                    203:         return(WinDefDlgProc(hwnd, msg, mp1, mp2));
                    204:     }
                    205:     return 0L;
                    206: }
                    207: 
                    208: 
                    209: 
                    210: 
                    211: /**************************************************************************\
                    212: * AboutWndProc(HWND hwnd, USHORT message, MPARAM mp1, MPARAM mp2)
                    213: *
                    214: * About Spy... Dialog procedure
                    215: \***************************************************************************/
                    216: MRESULT CALLBACK AboutWndProc(hwnd, message, mp1, mp2)
                    217: HWND    hwnd;
                    218: USHORT  message;
                    219: MPARAM   mp1;
                    220: MPARAM   mp2;
                    221: {
                    222:     switch (message) {
                    223:         case WM_COMMAND:
                    224:             WinDismissDlg(hwnd, TRUE);
                    225:             break;
                    226:         default:
                    227:             return(WinDefDlgProc(hwnd, message, mp1, mp2));
                    228:             break;
                    229:     }
                    230:     return 0L;
                    231: 
                    232: } /* end aboutwndproc */
                    233: 

unix.superglobalmegacorp.com

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