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