|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.