|
|
1.1 root 1: /*---------------------------------------------------
2: PATTERNS.C -- Select GPI Patterns from Dialog Box
3: ---------------------------------------------------*/
4:
5: #define INCL_WIN
6: #define INCL_GPI
7:
8: #include <os2.h>
9: #include <stddef.h>
10: #include "patterns.h"
11:
12: typedef struct
13: {
14: SHORT sPattern ;
15: SHORT sColor ;
16: BOOL fBorder ;
17: }
18: PATTERNSDATA ;
19:
20: typedef PATTERNSDATA FAR *PPATTERNSDATA ;
21:
22: MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
23:
24: HAB hab ;
25:
26: int main (void)
27: {
28: static CHAR szClientClass[] = "Patterns" ;
29: HMQ hmq ;
30: HWND hwndClient, hwndFrame ;
31: QMSG qmsg ;
32: ULONG flFrameFlags = FCF_STANDARD ;
33: ULONG flFrameStyle = WS_VISIBLE ;
34:
35: hab = WinInitialize (0) ;
36: hmq = WinCreateMsgQueue (hab, 0) ;
37:
38: WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ;
39:
40: hwndFrame = WinCreateStdWindow (HWND_DESKTOP, flFrameStyle,
41: &flFrameFlags, szClientClass,
42: szClientClass,
43: 0L, NULL, ID_RESOURCE, &hwndClient) ;
44:
45: while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
46: WinDispatchMsg (hab, &qmsg) ;
47:
48: WinDestroyWindow (hwndFrame) ;
49: WinDestroyMsgQueue (hmq) ;
50: WinTerminate (hab) ;
51: return 0 ;
52: }
53:
54: MRESULT EXPENTRY PatternDlgProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
55: {
56: static PATTERNSDATA pdLocal ;
57: static PPATTERNSDATA ppdCurrent ;
58:
59: switch (msg)
60: {
61: case WM_INITDLG:
62: ppdCurrent = MPFROMP (mp2) ;
63: pdLocal = *ppdCurrent ;
64:
65: WinSendDlgItemMsg (hwnd, pdLocal.sPattern, BM_SETCHECK,
66: MPFROM2SHORT (TRUE, 0), NULL) ;
67:
68: WinSendDlgItemMsg (hwnd, pdLocal.sColor, BM_SETCHECK,
69: MPFROM2SHORT (TRUE, 0), NULL) ;
70:
71: WinSendDlgItemMsg (hwnd, IDD_BORDER, BM_SETCHECK,
72: MPFROM2SHORT (pdLocal.fBorder, 0), NULL) ;
73:
74: WinSetFocus (HWND_DESKTOP,
75: WinWindowFromID (hwnd, pdLocal.sPattern)) ;
76: return 1 ;
77:
78: case WM_CONTROL:
79: if (SHORT1FROMMP (mp1) >= IDD_DENSE1 &&
80: SHORT1FROMMP (mp1) <= IDD_HALFTONE)
81: {
82: WinSendDlgItemMsg (hwnd, pdLocal.sPattern, BM_SETCHECK,
83: MPFROM2SHORT (FALSE, 0), NULL) ;
84:
85: pdLocal.sPattern = SHORT1FROMMP (mp1) ;
86:
87: WinSendDlgItemMsg (hwnd, pdLocal.sPattern, BM_SETCHECK,
88: MPFROM2SHORT (TRUE, 0), NULL) ;
89: }
90:
91: else if (SHORT1FROMMP (mp1) >= IDD_BKGRND &&
92: SHORT1FROMMP (mp1) <= IDD_LIGHTGRAY)
93: {
94: WinSendDlgItemMsg (hwnd, pdLocal.sColor, BM_SETCHECK,
95: MPFROM2SHORT (FALSE, 0), NULL) ;
96:
97: pdLocal.sColor = SHORT1FROMMP (mp1) ;
98:
99: WinSendDlgItemMsg (hwnd, pdLocal.sColor, BM_SETCHECK,
100: MPFROM2SHORT (TRUE, 0), NULL) ;
101: }
102: return 0 ;
103:
104: case WM_COMMAND:
105: switch (COMMANDMSG(&msg)->cmd)
106: {
107: case DID_OK:
108: pdLocal.fBorder = (BOOL) WinSendDlgItemMsg (hwnd,
109: IDD_BORDER, BM_QUERYCHECK, NULL, NULL) ;
110:
111: *ppdCurrent = pdLocal ;
112:
113: WinDismissDlg (hwnd, TRUE) ;
114: return 0 ;
115:
116: case DID_CANCEL:
117: WinDismissDlg (hwnd, FALSE) ;
118: return 0 ;
119: }
120: break ;
121: }
122: return WinDefDlgProc (hwnd, msg, mp1, mp2) ;
123: }
124:
125: MRESULT EXPENTRY AboutDlgProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
126: {
127: switch (msg)
128: {
129: case WM_COMMAND:
130: switch (COMMANDMSG(&msg)->cmd)
131: {
132: case DID_OK:
133: case DID_CANCEL:
134: WinDismissDlg (hwnd, TRUE) ;
135: return 0 ;
136: }
137: break ;
138: }
139: return WinDefDlgProc (hwnd, msg, mp1, mp2) ;
140: }
141:
142: MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
143: {
144: static CHAR szAppName [] = "PATTERNS" ;
145: static CHAR szKeyName [] = "SETTINGS" ;
146: static PATTERNSDATA pdCurrent = { IDD_DENSE1, IDD_BKGRND, TRUE } ;
147: static SHORT cxClient, cyClient ;
148: HPS hps ;
149: POINTL ptl ;
150: SHORT sDataLength ;
151:
152: switch (msg)
153: {
154: case WM_CREATE:
155: sDataLength = sizeof pdCurrent ;
156:
157: WinQueryProfileData (hab, szAppName, szKeyName, &pdCurrent,
158: &sDataLength) ;
159: return 0 ;
160:
161: case WM_SIZE:
162: cxClient = SHORT1FROMMP (mp2) ;
163: cyClient = SHORT2FROMMP (mp2) ;
164: return 0 ;
165:
166: case WM_COMMAND:
167: switch (COMMANDMSG(&msg)->cmd)
168: {
169: case IDM_PATTERNS:
170: if (WinDlgBox (HWND_DESKTOP, hwnd, PatternDlgProc,
171: NULL, IDD_PATTERNS, &pdCurrent))
172:
173: WinInvalidateRect (hwnd, NULL, FALSE) ;
174: return 0 ;
175:
176: case IDM_ABOUT:
177: WinDlgBox (HWND_DESKTOP, hwnd, AboutDlgProc,
178: NULL, IDD_ABOUT, NULL) ;
179: return 0 ;
180: }
181: break ;
182:
183: case WM_PAINT:
184: hps = WinBeginPaint (hwnd, NULL, NULL) ;
185: GpiErase (hps) ;
186:
187: GpiSetColor (hps, pdCurrent.sColor - IDD_BKGRND +
188: CLR_BACKGROUND) ;
189: GpiSetPattern (hps, pdCurrent.sPattern - IDD_DENSE1 +
190: PATSYM_DENSE1) ;
191: ptl.x = cxClient / 4 ;
192: ptl.y = cyClient / 4 ;
193: GpiMove (hps, &ptl) ;
194:
195: ptl.x *= 3 ;
196: ptl.y *= 3 ;
197: GpiBox (hps, pdCurrent.fBorder ? DRO_OUTLINEFILL : DRO_FILL,
198: &ptl, 0L, 0L) ;
199:
200: WinEndPaint (hps) ;
201: return 0 ;
202:
203: case WM_CLOSE:
204: if (MBID_YES == WinMessageBox (HWND_DESKTOP, hwnd,
205: "Save current settings?", szAppName, 0,
206: MB_YESNO | MB_ICONQUESTION))
207:
208: WinWriteProfileData (hab, szAppName, szKeyName, &pdCurrent,
209: sizeof pdCurrent) ;
210: break ;
211: }
212: return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
213: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.