|
|
1.1 root 1: /************************************************************************
2: *
3: * lfdlg.c -- Window procedures for dialog boxes used in LineFractal.
4: *
5: * Created by Microsoft Corporation, 1989
6: *
7: ************************************************************************/
8:
9: #define INCL_WIN
10: #define INCL_GPI
11: #include <os2.h>
12:
13: #include <mt\stdio.h>
14: #include <mt\stdlib.h>
15: #include <mt\math.h>
16:
17: #define INCL_GLOBALS
18: #define INCL_THREADS
19: #include "linefrac.h"
20:
21: #define INCL_LFDLG
22: #define INCL_LFUTIL
23: #include "lffuncs.h"
24:
25:
26:
27:
28: /************************************************************************
29: *
30: * Global Variables
31: *
32: * global Global data block.
33: *
34: ************************************************************************/
35:
36: extern GLOBALDATA global;
37:
38:
39:
40:
41: /************************************************************************
42: *
43: * AboutDlg
44: *
45: * Process messages for the About box.
46: *
47: ************************************************************************/
48:
49: ULONG CALLBACK
50: AboutDlg(hwnd, usMsg, mp1, mp2)
51: HWND hwnd;
52: USHORT usMsg;
53: MPARAM mp1;
54: MPARAM mp2;
55: {
56: switch (usMsg)
57: {
58: case WM_COMMAND: /* the user has pressed a button */
59: switch (SHORT1FROMMP(mp1)) /* which button? */
60: {
61: case IDD_OK:
62: case IDD_CANCEL:
63: WinDismissDlg(hwnd, TRUE);
64: break;
65:
66: default:
67: return FALSE;
68: }
69: break;
70:
71: default:
72: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
73: }
74: return FALSE;
75: }
76:
77:
78:
79:
80: /************************************************************************
81: *
82: * TimerDelayDlg
83: *
84: * Process messages for the dialog box used to set the timer delay
85: * values for automatically restarting a drawing.
86: *
87: ************************************************************************/
88:
89: ULONG CALLBACK
90: TimerDelayDlg(hwnd, usMsg, mp1, mp2)
91: HWND hwnd;
92: USHORT usMsg;
93: MPARAM mp1;
94: MPARAM mp2;
95: {
96: BOOL fRet = FALSE;
97:
98: switch (usMsg)
99: {
100: case WM_INITDLG:
101: MySetWindowUShort(hwnd, IDD_MINDELAY, global.usMinTimerDelay);
102: MySetWindowUShort(hwnd, IDD_MAXDELAY, global.usMaxTimerDelay);
103: return FALSE;
104:
105: case WM_COMMAND:
106: switch (SHORT1FROMMP(mp1))
107: {
108: case IDD_OK:
109: MyGetWindowUShort(hwnd, IDD_MINDELAY, &global.usMinTimerDelay);
110: MyGetWindowUShort(hwnd, IDD_MAXDELAY, &global.usMaxTimerDelay);
111:
112: fRet = TRUE;
113:
114: /* fall through to some common code */
115:
116: case IDD_CANCEL:
117: WinDismissDlg(hwnd, fRet);
118: break;
119:
120: default:
121: return FALSE;
122: }
123: break;
124:
125: default:
126: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
127: }
128: return FALSE;
129: }
130:
131:
132:
133:
134: /************************************************************************
135: *
136: * BitmapParamsDlg
137: *
138: * Process messages for the bitmap parameters dialog box.
139: *
140: ************************************************************************/
141:
142: ULONG CALLBACK
143: BitmapParamsDlg( hwnd, usMsg, mp1, mp2 )
144: HWND hwnd;
145: USHORT usMsg;
146: MPARAM mp1;
147: MPARAM mp2;
148: {
149: BOOL fRet = FALSE;
150:
151: switch (usMsg)
152: {
153: case WM_INITDLG:
154:
155: MySetWindowUShort(hwnd, IDD_BMCX, global.bm.cx);
156: MySetWindowUShort(hwnd, IDD_BMCY, global.bm.cy);
157: MySetWindowUShort(hwnd, IDD_BMPLANES, global.bm.cPlanes);
158: MySetWindowUShort(hwnd, IDD_BMBPP, global.bm.cBitCount);
159:
160: return FALSE;
161:
162: case WM_COMMAND:
163: switch (SHORT1FROMMP(mp1))
164: {
165: case IDD_OK:
166:
167: MyGetWindowUShort(hwnd, IDD_BMCX, &global.bm.cx);
168: MyGetWindowUShort(hwnd, IDD_BMCY, &global.bm.cy);
169: MyGetWindowUShort(hwnd, IDD_BMPLANES, &global.bm.cPlanes);
170: MyGetWindowUShort(hwnd, IDD_BMBPP, &global.bm.cBitCount);
171:
172: fRet = TRUE;
173:
174: /* fall through to some common code */
175:
176: case IDD_CANCEL:
177: WinDismissDlg(hwnd, fRet);
178: break;
179:
180: default:
181: return FALSE;
182: }
183: break;
184:
185: default:
186: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
187: }
188: return FALSE;
189: }
190:
191:
192:
193:
194: /************************************************************************
195: *
196: * SwitchDelayDlg
197: *
198: * Process messages for the dialog box used to set the switch
199: * delay value for automatically switching between threads.
200: *
201: ************************************************************************/
202:
203: ULONG CALLBACK
204: SwitchDelayDlg(hwnd, usMsg, mp1, mp2)
205: HWND hwnd;
206: USHORT usMsg;
207: MPARAM mp1;
208: MPARAM mp2;
209: {
210: BOOL fRet = FALSE;
211:
212: switch (usMsg)
213: {
214: case WM_INITDLG:
215: MySetWindowUShort(hwnd, IDD_SWITCHDELAY, global.usSwitchDelay);
216: return FALSE;
217:
218: case WM_COMMAND:
219: switch (SHORT1FROMMP(mp1))
220: {
221: case IDD_OK:
222: MyGetWindowUShort(hwnd, IDD_SWITCHDELAY, &global.usSwitchDelay);
223:
224: fRet = TRUE;
225:
226: /* fall through to some common code */
227:
228: case IDD_CANCEL:
229: WinDismissDlg(hwnd, fRet);
230: break;
231:
232: default:
233: return FALSE;
234: }
235: break;
236:
237: default:
238: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
239: }
240: return FALSE;
241: }
242:
243:
244:
245:
246: /************************************************************************
247: *
248: * LineAttrsDlg
249: *
250: * Process messages for the line attributes dialog box.
251: *
252: ************************************************************************/
253:
254: #define SETLINEATTR(H, I, J) \
255: MySetWindow##I(hwnd, J, global.lb.H)
256:
257: #define GETLINEATTR(H, I, J, K, L) \
258: { \
259: J temp; \
260: MyGetWindow##I(hwnd, K, &temp); \
261: if (temp != global.lb.H) \
262: { \
263: global.lb.H = temp; \
264: global.flLineAttrs |= L; \
265: } \
266: }
267:
268: ULONG CALLBACK
269: LineAttrsDlg( hwnd, usMsg, mp1, mp2 )
270: HWND hwnd;
271: USHORT usMsg;
272: MPARAM mp1;
273: MPARAM mp2;
274: {
275: BOOL fRet = FALSE;
276:
277: switch (usMsg)
278: {
279: case WM_INITDLG:
280:
281: if (!global.fUpdateAttrs || !(global.flLineAttrs & LFA_LINEALL))
282: global.lb = global.pThrTop->lb;
283:
284: SETLINEATTR(lColor, Long, IDD_LINECOLOR);
285: SETLINEATTR(usMixMode, UShort, IDD_LINEMIX);
286: SETLINEATTR(fxWidth, Long, IDD_LINEWIDTH);
287: SETLINEATTR(lGeomWidth, Long, IDD_LINEGEOMWIDTH);
288: SETLINEATTR(usType, UShort, IDD_LINETYPE);
289: SETLINEATTR(usEnd, UShort, IDD_LINEEND);
290: SETLINEATTR(usJoin, UShort, IDD_LINEJOIN);
291:
292: return FALSE;
293:
294: case WM_COMMAND:
295: switch (SHORT1FROMMP(mp1))
296: {
297: case IDD_OK:
298:
299: GETLINEATTR(lColor, Long, LONG, IDD_LINECOLOR, LFA_LINECOLOR);
300: GETLINEATTR(usMixMode, UShort, USHORT, IDD_LINEMIX, LFA_LINEMIX);
301: GETLINEATTR(fxWidth, Long, LONG, IDD_LINEWIDTH, LFA_LINEWIDTH);
302: GETLINEATTR(lGeomWidth, Long, LONG, IDD_LINEGEOMWIDTH, LFA_LINEGEOMWIDTH);
303: GETLINEATTR(usType, UShort, USHORT, IDD_LINETYPE, LFA_LINETYPE);
304: GETLINEATTR(usEnd, UShort, USHORT, IDD_LINEEND, LFA_LINEEND);
305: GETLINEATTR(usJoin, UShort, USHORT, IDD_LINEJOIN, LFA_LINEJOIN);
306:
307: if (global.flLineAttrs & LFA_LINEALL)
308: {
309: global.pThrTop->fUpdateAttrs = TRUE;
310: global.fUpdateAttrs = TRUE;
311: }
312:
313: fRet = TRUE;
314:
315: /* fall through to some common code */
316:
317: case IDD_CANCEL:
318: WinDismissDlg(hwnd, fRet);
319: break;
320:
321: default:
322: return FALSE;
323: }
324: break;
325:
326: default:
327: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
328: }
329: return FALSE;
330: }
331: #undef SETLINEATTR
332: #undef GETLINEATTR
333:
334:
335:
336:
337: /************************************************************************
338: *
339: * MarkerAttrsDlg
340: *
341: * Process messages for the marker attributes dialog box.
342: *
343: ************************************************************************/
344:
345: #define SETMARKATTR(H, I, J) \
346: MySetWindow##I(hwnd, J, global.mb.H)
347:
348: #define GETMARKATTR(H, I, J, K, L) \
349: { \
350: J temp; \
351: MyGetWindow##I(hwnd, K, &temp); \
352: if (temp != global.mb.H) \
353: { \
354: global.mb.H = temp; \
355: global.flMarkerAttrs |= L; \
356: } \
357: }
358:
359: ULONG CALLBACK
360: MarkerAttrsDlg( hwnd, usMsg, mp1, mp2 )
361: HWND hwnd;
362: USHORT usMsg;
363: MPARAM mp1;
364: MPARAM mp2;
365: {
366: BOOL fRet = FALSE;
367:
368: switch (usMsg)
369: {
370: case WM_INITDLG:
371:
372: if (!global.fUpdateAttrs || !(global.flMarkerAttrs & LFA_MARKALL))
373: global.mb = global.pThrTop->mb;
374:
375: SETMARKATTR(lColor, Long, IDD_MARKCOLOR);
376: SETMARKATTR(lBackColor, Long, IDD_MARKBACKCOLOR);
377: SETMARKATTR(usMixMode, UShort, IDD_MARKMIX);
378: SETMARKATTR(usBackMixMode, UShort, IDD_MARKBACKMIX);
379: SETMARKATTR(usSet, UShort, IDD_MARKSET);
380: SETMARKATTR(usSymbol, UShort, IDD_MARKSYMBOL);
381: SETMARKATTR(sizfxCell.cx, Long, IDD_MARKCELLWIDTH);
382: SETMARKATTR(sizfxCell.cy, Long, IDD_MARKCELLHEIGHT);
383:
384: return FALSE;
385:
386: case WM_COMMAND:
387: switch (SHORT1FROMMP(mp1))
388: {
389: case IDD_OK:
390:
391: GETMARKATTR(lColor, Long, LONG, IDD_MARKCOLOR, LFA_MARKCOLOR);
392: GETMARKATTR(lBackColor, Long, LONG, IDD_MARKBACKCOLOR, LFA_MARKBACKCOLOR);
393: GETMARKATTR(usMixMode, UShort, USHORT, IDD_MARKMIX, LFA_MARKMIX);
394: GETMARKATTR(usBackMixMode, UShort, USHORT, IDD_MARKBACKMIX, LFA_MARKBACKMIX);
395: GETMARKATTR(usSet, UShort, USHORT, IDD_MARKSET, LFA_MARKSET);
396: GETMARKATTR(usSymbol, UShort, USHORT, IDD_MARKSYMBOL, LFA_MARKSYMBOL);
397: GETMARKATTR(sizfxCell.cx, Long, LONG, IDD_MARKCELLWIDTH, LFA_MARKCELLWIDTH);
398: GETMARKATTR(sizfxCell.cy, Long, LONG, IDD_MARKCELLHEIGHT, LFA_MARKCELLHEIGHT);
399:
400: if (global.flMarkerAttrs & LFA_MARKALL)
401: {
402: global.pThrTop->fUpdateAttrs = TRUE;
403: global.fUpdateAttrs = TRUE;
404: }
405:
406: fRet = TRUE;
407:
408: /* fall through to some common code */
409:
410: case IDD_CANCEL:
411: WinDismissDlg(hwnd, fRet);
412: break;
413:
414: default:
415: return FALSE;
416: }
417: break;
418:
419: default:
420: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
421: }
422: return FALSE;
423: }
424: #undef SETMARKATTR
425: #undef GETMARKATTR
426:
427:
428:
429:
430: /************************************************************************
431: *
432: * AreaAttrsDlg
433: *
434: * Process messages for the area attributes dialog box.
435: *
436: ************************************************************************/
437:
438: #define SETAREAATTR(H, I, J) \
439: MySetWindow##I(hwnd, J, global.ab.H)
440:
441: #define GETAREAATTR(H, I, J, K, L) \
442: { \
443: J temp; \
444: MyGetWindow##I(hwnd, K, &temp); \
445: if (temp != global.ab.H) \
446: { \
447: global.ab.H = temp; \
448: global.flAreaAttrs |= L; \
449: } \
450: }
451:
452: ULONG CALLBACK
453: AreaAttrsDlg( hwnd, usMsg, mp1, mp2 )
454: HWND hwnd;
455: USHORT usMsg;
456: MPARAM mp1;
457: MPARAM mp2;
458: {
459: BOOL fRet = FALSE;
460:
461: switch (usMsg)
462: {
463: case WM_INITDLG:
464:
465: if (!global.fUpdateAttrs || !(global.flAreaAttrs & LFA_AREAALL))
466: global.ab = global.pThrTop->ab;
467:
468: SETAREAATTR(lColor, Long, IDD_AREACOLOR);
469: SETAREAATTR(lBackColor, Long, IDD_AREABACKCOLOR);
470: SETAREAATTR(usMixMode, UShort, IDD_AREAMIX);
471: SETAREAATTR(usBackMixMode, UShort, IDD_AREABACKMIX);
472: SETAREAATTR(usSet, UShort, IDD_AREASET);
473: SETAREAATTR(usSymbol, UShort, IDD_AREASYMBOL);
474: SETAREAATTR(ptlRefPoint.x, Long, IDD_AREAREFX);
475: SETAREAATTR(ptlRefPoint.y, Long, IDD_AREAREFY);
476:
477: return FALSE;
478:
479: case WM_COMMAND:
480: switch (SHORT1FROMMP(mp1))
481: {
482: case IDD_OK:
483:
484: GETAREAATTR(lColor, Long, LONG, IDD_AREACOLOR, LFA_AREACOLOR);
485: GETAREAATTR(lBackColor, Long, LONG, IDD_AREABACKCOLOR, LFA_AREABACKCOLOR);
486: GETAREAATTR(usMixMode, UShort, USHORT, IDD_AREAMIX, LFA_AREAMIX);
487: GETAREAATTR(usBackMixMode, UShort, USHORT, IDD_AREABACKMIX, LFA_AREABACKMIX);
488: GETAREAATTR(usSet, UShort, USHORT, IDD_AREASET, LFA_AREASET);
489: GETAREAATTR(usSymbol, UShort, USHORT, IDD_AREASYMBOL, LFA_AREASYMBOL);
490: GETAREAATTR(ptlRefPoint.x, Long, LONG, IDD_AREAREFX, LFA_AREAREFX);
491: GETAREAATTR(ptlRefPoint.y, Long, LONG, IDD_AREAREFY, LFA_AREAREFY);
492:
493: if (global.flAreaAttrs & LFA_AREAALL)
494: {
495: global.pThrTop->fUpdateAttrs = TRUE;
496: global.fUpdateAttrs = TRUE;
497: }
498:
499: fRet = TRUE;
500:
501: /* fall through to some common code */
502:
503: case IDD_CANCEL:
504: WinDismissDlg(hwnd, fRet);
505: break;
506:
507: default:
508: return FALSE;
509: }
510: break;
511:
512: default:
513: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
514: }
515: return FALSE;
516: }
517: #undef SETAREAATTR
518: #undef GETAREAATTR
519:
520:
521:
522:
523: /************************************************************************
524: *
525: * ImageAttrsDlg
526: *
527: * Process messages for the image attributes dialog box.
528: *
529: ************************************************************************/
530:
531: #define SETIMAGEATTR(H, I, J) \
532: MySetWindow##I(hwnd, J, global.ib.H)
533:
534: #define GETIMAGEATTR(H, I, J, K, L) \
535: { \
536: J temp; \
537: MyGetWindow##I(hwnd, K, &temp); \
538: if (temp != global.ib.H) \
539: { \
540: global.ib.H = temp; \
541: global.flImageAttrs |= L; \
542: } \
543: }
544:
545: ULONG CALLBACK
546: ImageAttrsDlg( hwnd, usMsg, mp1, mp2 )
547: HWND hwnd;
548: USHORT usMsg;
549: MPARAM mp1;
550: MPARAM mp2;
551: {
552: BOOL fRet = FALSE;
553:
554: switch (usMsg)
555: {
556: case WM_INITDLG:
557:
558: if (!global.fUpdateAttrs || !(global.flImageAttrs & LFA_IMAGEALL))
559: global.ib = global.pThrTop->ib;
560:
561: SETIMAGEATTR(lColor, Long, IDD_IMAGECOLOR);
562: SETIMAGEATTR(lBackColor, Long, IDD_IMAGEBACKCOLOR);
563: SETIMAGEATTR(usMixMode, UShort, IDD_IMAGEMIX);
564: SETIMAGEATTR(usBackMixMode, UShort, IDD_IMAGEBACKMIX);
565:
566: return FALSE;
567:
568: case WM_COMMAND:
569: switch (SHORT1FROMMP(mp1))
570: {
571: case IDD_OK:
572:
573: GETIMAGEATTR(lColor, Long, LONG, IDD_IMAGECOLOR, LFA_IMAGECOLOR);
574: GETIMAGEATTR(lBackColor, Long, LONG, IDD_IMAGEBACKCOLOR, LFA_IMAGEBACKCOLOR);
575: GETIMAGEATTR(usMixMode, UShort, USHORT, IDD_IMAGEMIX, LFA_IMAGEMIX);
576: GETIMAGEATTR(usBackMixMode, UShort, USHORT, IDD_IMAGEBACKMIX, LFA_IMAGEBACKMIX);
577:
578: if (global.flImageAttrs & LFA_IMAGEALL)
579: {
580: global.pThrTop->fUpdateAttrs = TRUE;
581: global.fUpdateAttrs = TRUE;
582: }
583:
584: fRet = TRUE;
585:
586: /* fall through to some common code */
587:
588: case IDD_CANCEL:
589: WinDismissDlg(hwnd, fRet);
590: break;
591:
592: default:
593: return FALSE;
594: }
595: break;
596:
597: default:
598: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
599: }
600: return FALSE;
601: }
602: #undef SETIMAGEATTR
603: #undef GETIMAGEATTR
604:
605:
606:
607:
608: /************************************************************************
609: *
610: * MiscAttrsDlg
611: *
612: * Process messages for the fractal attributes dialog box.
613: *
614: ************************************************************************/
615:
616: #define SETMISCATTR(H, I, J) \
617: MySetWindow##I(hwnd, J, global.H)
618:
619: #define GETMISCATTR(H, I, J, K, L) \
620: { \
621: J temp; \
622: MyGetWindow##I(hwnd, K, &temp); \
623: if (temp != global.H) \
624: { \
625: global.H = temp; \
626: global.flMiscAttrs |= L; \
627: } \
628: }
629:
630: ULONG CALLBACK
631: MiscAttrsDlg( hwnd, usMsg, mp1, mp2 )
632: HWND hwnd;
633: USHORT usMsg;
634: MPARAM mp1;
635: MPARAM mp2;
636: {
637: BOOL fRet = FALSE;
638:
639: switch (usMsg)
640: {
641: case WM_INITDLG:
642:
643: if (!global.fUpdateAttrs || !(global.flMiscAttrs &
644: (LFA_RECURSION|LFA_CPTMAX|LFA_POLYGONSIDES|LFA_ROTATION)))
645: {
646: global.usRecursion = global.pThrTop->usRecursion;
647: global.cptMax = global.pThrTop->cptMax;
648: global.usPolygonSides = global.pThrTop->usPolygonSides;
649: global.dblRotation = global.pThrTop->dblRotation;
650: }
651:
652: SETMISCATTR(usRecursion, UShort, IDD_RECURSION);
653: SETMISCATTR(cptMax, UShort, IDD_CPTMAX);
654: SETMISCATTR(usPolygonSides, UShort, IDD_NUMSIDES);
655: SETMISCATTR(dblRotation, Double, IDD_ROTATION);
656:
657: return FALSE;
658:
659: case WM_COMMAND:
660: switch (SHORT1FROMMP(mp1))
661: {
662: case IDD_OK:
663:
664: GETMISCATTR(usRecursion, UShort, USHORT, IDD_RECURSION, LFA_RECURSION);
665: GETMISCATTR(cptMax, UShort, USHORT, IDD_CPTMAX, LFA_CPTMAX);
666: GETMISCATTR(usPolygonSides, UShort, USHORT, IDD_NUMSIDES, LFA_POLYGONSIDES);
667: GETMISCATTR(dblRotation, Double, double, IDD_ROTATION, LFA_ROTATION);
668:
669: if (global.flMiscAttrs & LFA_POLYGONSIDES)
670: if (global.usPolygonSides == 0)
671: global.usPolygonSides = 2;
672:
673: if (global.flMiscAttrs & LFA_CPTMAX)
674: {
675: if (global.cptMax == 0)
676: global.cptMax = 1;
677: else if (global.cptMax > MAX_POINT_COUNT)
678: global.cptMax = MAX_POINT_COUNT;
679: }
680:
681: if (global.flMiscAttrs & (LFA_RECURSION|LFA_CPTMAX|
682: LFA_POLYGONSIDES|LFA_ROTATION))
683: {
684: global.pThrTop->fUpdateAttrs = TRUE;
685: global.fUpdateAttrs = TRUE;
686: }
687:
688: fRet = TRUE;
689:
690: /* fall through to some common code */
691:
692: case IDD_CANCEL:
693: WinDismissDlg(hwnd, fRet);
694: break;
695:
696: default:
697: return FALSE;
698: }
699: break;
700:
701: default:
702: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
703: }
704: return FALSE;
705: }
706: #undef SETMISCATTR
707: #undef GETMISCATTR
708:
709:
710:
711:
712: /************************************************************************
713: *
714: * DimensionsDlg
715: *
716: * Process messages for the fractal dimensions dialog box.
717: *
718: ************************************************************************/
719:
720: #define SETDIMENSIONS(H, I, J) \
721: MySetWindow##I(hwnd, J, global.H)
722:
723: #define GETDIMENSIONS(H, I, J, K, L) \
724: { \
725: J temp; \
726: MyGetWindow##I(hwnd, K, &temp); \
727: if (temp != global.H) \
728: { \
729: global.H = temp; \
730: global.flMiscAttrs |= L; \
731: } \
732: }
733:
734: ULONG CALLBACK
735: DimensionsDlg( hwnd, usMsg, mp1, mp2 )
736: HWND hwnd;
737: USHORT usMsg;
738: MPARAM mp1;
739: MPARAM mp2;
740: {
741: BOOL fRet = FALSE;
742:
743: switch (usMsg)
744: {
745: case WM_INITDLG:
746:
747: if (!global.fUpdateAttrs || !(global.flMiscAttrs &
748: (LFA_XOFF|LFA_YOFF|LFA_XSCALE|LFA_YSCALE)))
749: {
750: global.dblXOff = global.pThrTop->dblXOff;
751: global.dblYOff = global.pThrTop->dblYOff;
752: global.dblXScale = global.pThrTop->dblXScale;
753: global.dblYScale = global.pThrTop->dblYScale;
754: }
755:
756: SETDIMENSIONS(dblXOff, Double, IDD_XOFF);
757: SETDIMENSIONS(dblYOff, Double, IDD_YOFF);
758: SETDIMENSIONS(dblXScale, Double, IDD_XSCALE);
759: SETDIMENSIONS(dblYScale, Double, IDD_YSCALE);
760:
761: return FALSE;
762:
763: case WM_COMMAND:
764: switch (SHORT1FROMMP(mp1))
765: {
766: case IDD_OK:
767:
768: GETDIMENSIONS(dblXOff, Double, double, IDD_XOFF, LFA_XOFF);
769: GETDIMENSIONS(dblYOff, Double, double, IDD_YOFF, LFA_YOFF);
770: GETDIMENSIONS(dblXScale, Double, double, IDD_XSCALE, LFA_XSCALE);
771: GETDIMENSIONS(dblYScale, Double, double, IDD_YSCALE, LFA_YSCALE);
772:
773: if (global.flMiscAttrs & (LFA_XOFF|LFA_YOFF|LFA_XSCALE|LFA_YSCALE))
774: {
775: global.pThrTop->fUpdateAttrs = TRUE;
776: global.fUpdateAttrs = TRUE;
777: }
778:
779: fRet = TRUE;
780:
781: /* fall through to some common code */
782:
783: case IDD_CANCEL:
784: WinDismissDlg(hwnd, fRet);
785: break;
786:
787: default:
788: return FALSE;
789: }
790: break;
791:
792: default:
793: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
794: }
795: return FALSE;
796: }
797: #undef SETDIMENSIONS
798: #undef GETDIMENSIONS
799:
800:
801:
802:
803: /************************************************************************
804: *
805: * PtrPreferencesDlg
806: *
807: * Process messages for the mouse pointer preferences dialog box.
808: *
809: ************************************************************************/
810:
811: #define SETPTRPREF(H, I, J) \
812: MySetWindow##I(hwnd, J, global.H)
813:
814: #define GETPTRPREF(H, I, J) \
815: MyGetWindow##I(hwnd, J, &global.H)
816:
817: ULONG CALLBACK
818: PtrPreferencesDlg( hwnd, usMsg, mp1, mp2 )
819: HWND hwnd;
820: USHORT usMsg;
821: MPARAM mp1;
822: MPARAM mp2;
823: {
824: BOOL fRet = FALSE;
825:
826: switch (usMsg)
827: {
828: case WM_INITDLG:
829:
830: SETPTRPREF(usPtrThreshold, UShort, IDD_PTRTHRESHOLD);
831: WinSendDlgItemMsg(hwnd, global.usUserPtr+IDD_USERPTR0,
832: BM_SETCHECK, (MPARAM)TRUE, 0L);
833: return FALSE;
834:
835: case WM_COMMAND:
836: switch (SHORT1FROMMP(mp1))
837: {
838: case IDD_OK:
839:
840: GETPTRPREF(usPtrThreshold, UShort, IDD_PTRTHRESHOLD);
841: global.usUserPtr = (USHORT) WinSendDlgItemMsg(hwnd, IDD_USERPTR0,
842: BM_QUERYCHECKINDEX, 0L, 0L);
843:
844: if (global.usPtrThreshold < 0)
845: global.usPtrThreshold = 0;
846:
847: if (!global.fAnimatePtr)
848: global.usCurPtr = global.usUserPtr;
849:
850: fRet = TRUE;
851:
852: /* fall through to some common code */
853:
854: case IDD_CANCEL:
855: WinDismissDlg(hwnd, fRet);
856: break;
857:
858: default:
859: return FALSE;
860: }
861: break;
862:
863: default:
864: return (ULONG) WinDefDlgProc(hwnd, usMsg, mp1, mp2);
865: }
866: return FALSE;
867: }
868: #undef SETPTRPREF
869: #undef GETPTRPREF
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.