|
|
1.1 root 1: /*---------------------------------------------------------------------------*\
2: | RANDOM OBJECTS MODULE
3: |
4: | segment: _TEXT (DOS16)
5: | created: 19-Oct-90
6: | history: 19-Oct-90 <chriswil> created.
7: |
8: \*---------------------------------------------------------------------------*/
9:
10: #include <windows.h>
11: #include "gdidemo.h"
12: #include "draw.h"
13:
14: /*---------------------------------------------------------------------------*\
15: | CREATE DRAW WINDOW PROCEDURE
16: |
17: | created: 20-May-91
18: | history: 20-May-91 <chriswil> created.
19: |
20: \*---------------------------------------------------------------------------*/
21: HWND FAR CreateDrawWindow(HWND hWndClient, int nItem)
22: {
23: HANDLE hInstance;
24: MDICREATESTRUCT mcs;
25:
26:
27: hInstance = GETINSTANCE(hWndClient);
28:
29: /*
30: ** Initialize the MDI create struct for creation of the
31: ** test window.
32: */
33: mcs.szClass = DRAWCLASS;
34: mcs.szTitle = DRAWTITLE;
35: mcs.hOwner = hInstance;
36: mcs.x = CW_USEDEFAULT;
37: mcs.y = CW_USEDEFAULT;
38: mcs.cx = CW_USEDEFAULT;
39: mcs.cy = CW_USEDEFAULT;
40: mcs.style = 0l;
41: mcs.lParam = (LONG)nItem;
42:
43: return((HWND)SendMessage(hWndClient,WM_MDICREATE,NULL,(LONG)(LPMDICREATESTRUCT)&mcs));
44: }
45:
46:
47: /*---------------------------------------------------------------------------*\
48: | DRAW WINDOW PROCEDURE
49: |
50: | created: 20-May-91
51: | history: 20-May-91 <chriswil> created.
52: |
53: \*---------------------------------------------------------------------------*/
54: LONG APIENTRY DrawProc(HWND hWnd, UINT wMsg, WPARAM wParam, LONG lParam)
55: {
56: switch(wMsg)
57: {
58: case WM_CREATE:
59: DrawCreateProc(hWnd);
60: break;
61:
62:
63: case WM_COMMAND:
64: DrawCommandProc(hWnd,wParam,lParam);
65: break;
66:
67:
68: case WM_TIMER:
69: DrawObject(hWnd);
70: break;
71:
72:
73: case WM_PAINT:
74: DrawPaintProc(hWnd);
75: break;
76:
77:
78: case WM_DESTROY:
79: DrawDestroyProc(hWnd);
80: break;
81:
82:
83: default:
84: return(DefMDIChildProc(hWnd,wMsg,wParam,lParam));
85: }
86: return(0l);
87: }
88:
89:
90: /*---------------------------------------------------------------------------*\
91: | DRAW CREATE PROCEDURE
92: |
93: | created: 20-May-91
94: | history: 20-May-91 <chriswil> created.
95: |
96: \*---------------------------------------------------------------------------*/
97: BOOL DrawCreateProc(HWND hWnd)
98: {
99: PDRAWDATA pdd;
100:
101:
102: if(AllocWindowInfo(hWnd,sizeof(DRAWDATA)))
103: {
104: if(pdd = (PDRAWDATA)LockWindowInfo(hWnd))
105: {
106: pdd->nObject = 0;
107:
108: UnlockWindowInfo(hWnd);
109:
110: SetTimer(hWnd,1,50,NULL);
111: return(TRUE);
112: }
113: FreeWindowInfo(hWnd);
114: }
115: return(FALSE);
116: }
117:
118:
119: /*---------------------------------------------------------------------------*\
120: | DRAW COMMAND PROCEDURE
121: |
122: | created: 20-May-91
123: | history: 20-May-91 <chriswil> created.
124: |
125: \*---------------------------------------------------------------------------*/
126: BOOL DrawCommandProc(HWND hWnd, WPARAM wParam, LONG lParam)
127: {
128: hWnd = hWnd;
129: wParam = wParam;
130: lParam = lParam;
131:
132: return(TRUE);
133: }
134:
135:
136: /*---------------------------------------------------------------------------*\
137: | DRAW PAINT PROCEDURE
138: |
139: | created: 20-May-91
140: | history: 20-May-91 <chriswil> created.
141: |
142: \*---------------------------------------------------------------------------*/
143: VOID DrawPaintProc(HWND hWnd)
144: {
145: HDC hDC;
146: PAINTSTRUCT ps;
147:
148:
149: if(hDC = BeginPaint(hWnd,&ps))
150: EndPaint(hWnd,&ps);
151:
152: return;
153: }
154:
155:
156: /*---------------------------------------------------------------------------*\
157: | DRAW DESTROY PROCEDURE
158: |
159: | created: 20-May-91
160: | history: 20-May-91 <chriswil> created.
161: |
162: \*---------------------------------------------------------------------------*/
163: VOID DrawDestroyProc(HWND hWnd)
164: {
165: KillTimer(hWnd,1);
166: FreeWindowInfo(hWnd);
167: return;
168: }
169:
170:
171: VOID DrawObject(HWND hWnd)
172: {
173: PDRAWDATA pdd;
174: RECT rect;
175: HDC hDC;
176: int x1,y1,x2,y2,x3,y3,x4,y4,r,g,b,nObject;
177: HBRUSH hBrush;
178: char szDebug[80];
179:
180:
181: if(pdd = (PDRAWDATA)LockWindowInfo(hWnd))
182: {
183: if(hDC = GetDC(hWnd))
184: {
185: GetClientRect(hWnd,&rect);
186:
187: r = lRandom() % 255;
188: g = lRandom() % 255;
189: b = lRandom() % 255;
190:
191: if(hBrush = SelectObject(hDC,CreateSolidBrush(RGB(r,g,b))))
192: {
193: x1 = lRandom() % rect.right;
194: y1 = lRandom() % rect.bottom;
195: x2 = lRandom() % rect.right;
196: y2 = lRandom() % rect.bottom;
197: x3 = lRandom() % rect.right;
198: y3 = lRandom() % rect.bottom;
199: x4 = lRandom() % rect.right;
200: y4 = lRandom() % rect.bottom;
201:
202:
203: nObject = lRandom() % 5;
204:
205: switch(nObject)
206: {
207: default:
208: case OBJ_RECTANGLE:
209: wsprintf(szDebug,"Rectangle(%d,%d,%d,%d)\n",x1,y1,x2,y2);
210: DEBUGOUT(szDebug);
211: Rectangle(hDC,x1,y1,x2,y2);
212: break;
213:
214: case OBJ_ELLIPSE:
215: wsprintf(szDebug,"Ellipse(%d,%d,%d,%d)\n",x1,y1,x2,y2);
216: DEBUGOUT(szDebug);
217: Ellipse(hDC,x1,y1,x2,y2);
218: break;
219:
220:
221:
222: case OBJ_ROUNDRECT:
223: wsprintf(szDebug,"RoundRect(%d,%d,%d,%d,%d,%d)\n",x1,y1,x2,y2,x3,y3);
224: DEBUGOUT(szDebug);
225: RoundRect(hDC,x1,y1,x2,y2,x3,y3);
226: break;
227:
228: case OBJ_CHORD:
229: wsprintf(szDebug,"Chord(%d,%d,%d,%d,%d,%d,%d,%d)\n",x1,y1,x2,y2,x3,y3,x4,y4);
230: DEBUGOUT(szDebug);
231: Chord(hDC,x1,y1,x2,y2,x3,y3,x4,y4);
232: break;
233:
234: case OBJ_PIE:
235: wsprintf(szDebug,"Pie(%d,%d,%d,%d,%d,%d,%d,%d)\n",x1,y1,x2,y2,x3,y3,x4,y4);
236: DEBUGOUT(szDebug);
237: Pie(hDC,x1,y1,x2,y2,x3,y3,x4,y4);
238: break;
239:
240: }
241:
242: DeleteObject(SelectObject(hDC,hBrush));
243: }
244: ReleaseDC(hWnd,hDC);
245: }
246: UnlockWindowInfo(hWnd);
247: }
248: return;
249: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.