|
|
1.1 root 1: /******************************Module*Header*******************************\
2: * Module Name: mfedit.h
3: *
4: * Header file for mfedit
5: *
6: * Created: 28-May-1992 14:57:56
7: * Author: Petrus Wong
8: *
9: * Copyright (c) 1990 Microsoft Corporation
10: *
11: * Contains all the definitions, global variables, structures, etc
12: *
13: * Dependencies:
14: *
15: * metadef.h
16: *
17: \**************************************************************************/
18: #include <windows.h>
19: #include <string.h>
20:
21: #define LIGHTGRAY RGB(192, 192, 192)
22: #define DARKGRAY RGB(128, 128, 128)
23: #define MAX_POINTS 256
24: #define MAX_POINTS_MF 3
25: #define MAX_POINTS_BMP 3
26: //
27: // Menu ID's
28: //
29: #define MM_LOAD 7001
30: #define MM_RECORD 7002
31: #define MM_PRINT 7003
32: #define MM_PAGESETUP 7004
33: #define MM_PRINTSETUP 7005
34: #define MM_ABOUT 7006
35: #define MM_CUT 7007
36: #define MM_COPY 7008
37: #define MM_PASTE 7009
38: #define MM_DEL 7010
39: #define MM_LOAD_BMP 7011
40: #define MM_SAVE_BMP 7012
41: #define MM_LOAD_MASKBMP 7013
42: #define MM_REMOVE 7014
43: #define MM_INSERT 7015
44: #define MM_HITTEST 7016
45: #define MM_REPEAT 7017
46: #define MM_INCREASE 7018
47: #define MM_NORMAL 7019
48: #define MM_DECREASE 7020
49: #define MM_PEN 7021
50: #define MM_BRUSH 7022
51: #define MM_FONT 7023
52:
53: #define SIZEOFCAPTIONTEXT 20
54:
55: #define ACCEL_ID 100
56: #define APPICON 100
57:
58: //
59: // Control Panel ID's
60: //
61: #define OD_BTN_CNT 5
62: #define DID_CTRLPANEL 100
63: #define DID_ZERO 1000
64: #define DID_ONE 1001
65: #define DID_TWO 1002
66: #define DID_THREE 1003
67: #define DID_FOUR 1004
68: #define DID_FIVE 1005
69: #define DID_SIX 1006
70: #define DID_SEVEN 1007
71: #define DID_EIGHT 1008
72: #define DID_NINE 1009
73: #define DID_TEN_PLUS 1010
74: #define ID_OD_BTN_BASE 1011
75: #define DID_OPEN 1011
76: #define DID_RECORD 1012
77: #define DID_STOP 1013
78: #define DID_PLAY 1014
79: #define DID_FF 1015
80: #define DID_CLEAR 1016
81: #define DID_COUNTER 1017
82:
83: //
84: // Control Panel's Owner draw bitmaps
85: //
86: #define BMID_BASED 1011
87: #define BMID_OPEND 1011
88: #define BMID_RECORDD 1012
89: #define BMID_STOPD 1013
90: #define BMID_PLAYD 1014
91: #define BMID_FFD 1015
92: #define BMID_BASEU 2011
93: #define BMID_OPENU 2011
94: #define BMID_RECORDU 2012
95: #define BMID_STOPU 2013
96: #define BMID_PLAYU 2014
97: #define BMID_FFU 2015
98:
99: //
100: // Tools ID's
101: //
102: #define OD_TOOL_CNT 10
103: #define ID_OD_TOOL_BASE 3001
104: #define DID_PEN 3001
105: #define DID_TEXT 3002
106: #define DID_RECT 3003
107: #define DID_FILLRECT 3004
108: #define DID_ELLIPSE 3005
109: #define DID_FILLELLIPSE 3006
110: #define DID_LINE 3007
111: #define DID_BEZIER 3008
112: #define DID_BMPOBJ 3009
113: #define DID_METAF 3010
114:
115: //
116: // Tools Owner Draw bitmaps
117: //
118: #define BMID_TOOLBASED 3001
119: #define BMID_PEND 3001
120: #define BMID_TEXTD 3002
121: #define BMID_RECTD 3003
122: #define BMID_FILLRECTD 3004
123: #define BMID_ELLIPSED 3005
124: #define BMID_FILLELLIPSED 3006
125: #define BMID_LINED 3007
126: #define BMID_BEZIERD 3008
127: #define BMID_BMPOBJD 3009
128: #define BMID_METAFD 3010
129: #define BMID_TOOLBASEU 4001
130: #define BMID_PENU 4001
131: #define BMID_TEXTU 4002
132: #define BMID_RECTU 4003
133: #define BMID_FILLRECTU 4004
134: #define BMID_ELLIPSEU 4005
135: #define BMID_FILLELLIPSEU 4006
136: #define BMID_LINEU 4007
137: #define BMID_BEZIERU 4008
138: #define BMID_BMPOBJU 4009
139: #define BMID_METAFU 4010
140:
141: #define MR_MIN 1
142:
143: #define MR_METAFILE 1
144: #define MR_POLYBEZIER 2
145: #define MR_POLYGON 3
146: #define MR_POLYLINE 4
147: #define MR_POLYBEZIERTO 5
148: #define MR_POLYLINETO 6
149: #define MR_POLYPOLYLINE 7
150: #define MR_POLYPOLYGON 8
151: #define MR_SETWINDOWEXTEX 9
152: #define MR_SETWINDOWORGEX 10
153: #define MR_SETVIEWPORTEXTEX 11
154: #define MR_SETVIEWPORTORGEX 12
155: #define MR_SETBRUSHORGEX 13
156: #define MR_EOF 14
157: #define MR_SETPIXELV 15
158: #define MR_SETMAPPERFLAGS 16
159: #define MR_SETMAPMODE 17
160: #define MR_SETBKMODE 18
161: #define MR_SETPOLYFILLMODE 19
162: #define MR_SETROP2 20
163: #define MR_SETSTRETCHBLTMODE 21
164: #define MR_SETTEXTALIGN 22
165:
166: #define MR_SETTEXTCOLOR 24
167: #define MR_SETBKCOLOR 25
168: #define MR_OFFSETCLIPRGN 26
169: #define MR_MOVETOEX 27
170: #define MR_SETMETARGN 28
171: #define MR_EXCLUDECLIPRECT 29
172: #define MR_INTERSECTCLIPRECT 30
173: #define MR_SCALEVIEWPORTEXTEX 31
174: #define MR_SCALEWINDOWEXTEX 32
175: #define MR_SAVEDC 33
176: #define MR_RESTOREDC 34
177: #define MR_SETWORLDTRANSFORM 35
178: #define MR_MODIFYWORLDTRANSFORM 36
179: #define MR_SELECTOBJECT 37
180: #define MR_CREATEPEN 38
181: #define MR_CREATEBRUSHINDIRECT 39
182: #define MR_DELETEOBJECT 40
183: #define MR_ANGLEARC 41
184: #define MR_ELLIPSE 42
185: #define MR_RECTANGLE 43
186: #define MR_ROUNDRECT 44
187: #define MR_ARC 45
188: #define MR_CHORD 46
189: #define MR_PIE 47
190: #define MR_SELECTPALETTE 48
191: #define MR_CREATEPALETTE 49
192: #define MR_SETPALETTEENTRIES 50
193: #define MR_RESIZEPALETTE 51
194: #define MR_REALIZEPALETTE 52
195: #define MR_EXTFLOODFILL 53
196: #define MR_LINETO 54
197: #define MR_ARCTO 55
198: #define MR_POLYDRAW 56
199: #define MR_SETARCDIRECTION 57
200: #define MR_SETMITERLIMIT 58
201: #define MR_BEGINPATH 59
202: #define MR_ENDPATH 60
203: #define MR_CLOSEFIGURE 61
204: #define MR_FILLPATH 62
205: #define MR_STROKEANDFILLPATH 63
206: #define MR_STROKEPATH 64
207: #define MR_FLATTENPATH 65
208: #define MR_WIDENPATH 66
209: #define MR_SELECTCLIPPATH 67
210: #define MR_ABORTPATH 68
211:
212: #define MR_GDICOMMENT 70
213: #define MR_FILLRGN 71
214: #define MR_FRAMERGN 72
215: #define MR_INVERTRGN 73
216: #define MR_PAINTRGN 74
217: #define MR_EXTSELECTCLIPRGN 75
218: #define MR_BITBLT 76
219: #define MR_STRETCHBLT 77
220: #define MR_MASKBLT 78
221: #define MR_PLGBLT 79
222: #define MR_SETDIBITSTODEVICE 80
223: #define MR_STRETCHDIBITS 81
224: #define MR_EXTCREATEFONTINDIRECTW 82
225: #define MR_EXTTEXTOUTA 83
226: #define MR_EXTTEXTOUTW 84
227: #define MR_POLYBEZIER16 85
228: #define MR_POLYGON16 86
229: #define MR_POLYLINE16 87
230: #define MR_POLYBEZIERTO16 88
231: #define MR_POLYLINETO16 89
232: #define MR_POLYPOLYLINE16 90
233: #define MR_POLYPOLYGON16 91
234: #define MR_POLYDRAW16 92
235: #define MR_CREATEMONOBRUSH 93
236: #define MR_CREATEDIBPATTERNBRUSHPT 94
237: #define MR_EXTCREATEPEN 95
238: #define MR_MAX 95
239:
240:
241: //
242: // some handy macros
243: //
244: #define GET_WM_CTLCOLOR_HDC(wp, lp, msg) (HDC)(wp)
245: #define GET_WM_CTLCOLOR_HWND(wp, lp, msg) (HWND)(lp)
246: #define GET_WM_CTLCOLOR_TYPE(wp, lp, msg) (WORD)(msg - WM_CTLCOLORMSGBOX)
247:
248: typedef struct _playinfo {
249: int iRecord;
250: BOOL bPlayContinuous;
251: } PLAYINFO;
252:
253: typedef struct _metalookup {
254: LPSTR szGDIName;
255: int iMRNumber;
256: } METALOOKUP;
257:
258: typedef struct _htdata {
259: POINT point;
260: int iRecord;
261: } HTDATA;
262:
263: METALOOKUP rgMetaName[] =
264: {
265: { " ", 0 },
266: { "METAFILE ", MR_METAFILE },
267: { "POLYBEZIER ", MR_POLYBEZIER },
268: { "POLYGON ", MR_POLYGON },
269: { "POLYLINE ", MR_POLYLINE },
270: { "POLYBEZIERTO ", MR_POLYBEZIERTO },
271: { "POLYLINETO ", MR_POLYLINETO },
272: { "POLYPOLYLINE ", MR_POLYPOLYLINE },
273: { "POLYPOLYGON ", MR_POLYPOLYGON },
274: { "SETWINDOWEXTEX ", MR_SETWINDOWEXTEX },
275: { "SETWINDOWORGEX ", MR_SETWINDOWORGEX },
276: { "SETVIEWPORTEXTEX ", MR_SETVIEWPORTEXTEX },
277: { "SETVIEWPORTORGEX ", MR_SETVIEWPORTORGEX },
278: { "SETBRUSHORGEX ", MR_SETBRUSHORGEX },
279: { "EOF ", MR_EOF },
280: { "SETPIXELV ", MR_SETPIXELV },
281: { "SETMAPPERFLAGS ", MR_SETMAPPERFLAGS },
282: { "SETMAPMODE ", MR_SETMAPMODE },
283: { "SETBKMODE ", MR_SETBKMODE },
284: { "SETPOLYFILLMODE ", MR_SETPOLYFILLMODE },
285: { "SETROP2 ", MR_SETROP2 },
286: { "SETSTRETCHBLTMODE ", MR_SETSTRETCHBLTMODE },
287: { "SETTEXTALIGN ", MR_SETTEXTALIGN },
288: { "UNKNOWN ", 23 },
289: { "SETTEXTCOLOR ", MR_SETTEXTCOLOR },
290: { "SETBKCOLOR ", MR_SETBKCOLOR },
291: { "OFFSETCLIPRGN ", MR_OFFSETCLIPRGN },
292: { "MOVETOEX ", MR_MOVETOEX },
293: { "SETMETARGN ", MR_SETMETARGN },
294: { "EXCLUDECLIPRECT ", MR_EXCLUDECLIPRECT },
295: { "INTERSECTCLIPRECT ", MR_INTERSECTCLIPRECT },
296: { "SCALEVIEWPORTEXTEX ", MR_SCALEVIEWPORTEXTEX },
297: { "SCALEWINDOWEXTEX ", MR_SCALEWINDOWEXTEX },
298: { "SAVEDC ", MR_SAVEDC },
299: { "RESTOREDC ", MR_RESTOREDC },
300: { "SETWORLDTRANSFORM ", MR_SETWORLDTRANSFORM },
301: { "MODIFYWORLDTRANSFORM ", MR_MODIFYWORLDTRANSFORM },
302: { "SELECTOBJECT ", MR_SELECTOBJECT },
303: { "CREATEPEN ", MR_CREATEPEN },
304: { "CREATEBRUSHINDIRECT ", MR_CREATEBRUSHINDIRECT },
305: { "DELETEOBJECT ", MR_DELETEOBJECT },
306: { "ANGLEARC ", MR_ANGLEARC },
307: { "ELLIPSE ", MR_ELLIPSE },
308: { "RECTANGLE ", MR_RECTANGLE },
309: { "ROUNDRECT ", MR_ROUNDRECT },
310: { "ARC ", MR_ARC },
311: { "CHORD ", MR_CHORD },
312: { "PIE ", MR_PIE },
313: { "SELECTPALETTE ", MR_SELECTPALETTE },
314: { "CREATEPALETTE ", MR_CREATEPALETTE },
315: { "SETPALETTEENTRIES ", MR_SETPALETTEENTRIES },
316: { "RESIZEPALETTE ", MR_RESIZEPALETTE },
317: { "REALIZEPALETTE ", MR_REALIZEPALETTE },
318: { "EXTFLOODFILL ", MR_EXTFLOODFILL },
319: { "LINETO ", MR_LINETO },
320: { "ARCTO ", MR_ARCTO },
321: { "POLYDRAW ", MR_POLYDRAW },
322: { "SETARCDIRECTION ", MR_SETARCDIRECTION },
323: { "SETMITERLIMIT ", MR_SETMITERLIMIT },
324: { "BEGINPATH ", MR_BEGINPATH },
325: { "ENDPATH ", MR_ENDPATH },
326: { "CLOSEFIGURE ", MR_CLOSEFIGURE },
327: { "FILLPATH ", MR_FILLPATH },
328: { "STROKEANDFILLPATH ", MR_STROKEANDFILLPATH },
329: { "STROKEPATH ", MR_STROKEPATH },
330: { "FLATTENPATH ", MR_FLATTENPATH },
331: { "WIDENPATH ", MR_WIDENPATH },
332: { "SELECTCLIPPATH ", MR_SELECTCLIPPATH },
333: { "ABORTPATH ", MR_ABORTPATH },
334: { "UNKNOWN ", 69 },
335: { "GDICOMMENT ", MR_GDICOMMENT },
336: { "FILLRGN ", MR_FILLRGN },
337: { "FRAMERGN ", MR_FRAMERGN },
338: { "INVERTRGN ", MR_INVERTRGN },
339: { "PAINTRGN ", MR_PAINTRGN },
340: { "EXTSELECTCLIPRGN ", MR_EXTSELECTCLIPRGN },
341: { "BITBLT ", MR_BITBLT },
342: { "STRETCHBLT ", MR_STRETCHBLT },
343: { "MASKBLT ", MR_MASKBLT },
344: { "PLGBLT ", MR_PLGBLT },
345: { "SETDIBITSTODEVICE ", MR_SETDIBITSTODEVICE },
346: { "STRETCHDIBITS ", MR_STRETCHDIBITS },
347: { "EXTCREATEFONTINDIRECTW ", MR_EXTCREATEFONTINDIRECTW },
348: { "EXTTEXTOUTA ", MR_EXTTEXTOUTA },
349: { "EXTTEXTOUTW ", MR_EXTTEXTOUTW },
350: { "POLYBEZIER16 ", MR_POLYBEZIER16 },
351: { "POLYGON16 ", MR_POLYGON16 },
352: { "POLYLINE16 ", MR_POLYLINE16 },
353: { "POLYBEZIERTO16 ", MR_POLYBEZIERTO16 },
354: { "POLYLINETO16 ", MR_POLYLINETO16 },
355: { "POLYPOLYLINE16 ", MR_POLYPOLYLINE16 },
356: { "POLYPOLYGON16 ", MR_POLYPOLYGON16 },
357: { "POLYDRAW16 ", MR_POLYDRAW16 },
358: { "CREATEMONOBRUSH ", MR_CREATEMONOBRUSH },
359: { "CREATEDIBPATTERNBRUSHPT ", MR_CREATEDIBPATTERNBRUSHPT},
360: { "EXTCREATEPEN ", MR_EXTCREATEPEN },
361: };
362:
363: HANDLE ghModule;
364: HWND ghwndMain = NULL;
365: HWND ghwndClient = NULL;
366: HWND ghwndDrawSurf = NULL;
367: HWND ghwndCtrlPanel = NULL;
368: HWND ghwndTools = NULL;
369: HWND ghTextWnd = NULL;
370:
371: LONG glcyStatus;
372: BOOL gbRecording = FALSE;
373: BOOL gbHitTest = FALSE;
374:
375: #if 0 // STRICT doesn't like this
376: HWND grHwndCtrlBtn[OD_BTN_CNT];
377: HWND grHwndToolBtn[OD_TOOL_CNT];
378: #endif
379: PVOID grHwndCtrlBtn[OD_BTN_CNT];
380: PVOID grHwndToolBtn[OD_TOOL_CNT];
381:
382: DWORD gdwCurCtrl = DID_STOP;
383: DWORD gdwCurTool = DID_PEN;
384:
385: HFONT ghCurFont;
386: LOGFONT glf;
387: COLORREF gCrText=0; // Black
388:
389: HMENU hMenu, hMenuWindow;
390: HMENU hChildMenu, hChildMenuWindow;
391: HDC ghDCMem;
392: HDC ghDCMetaf = (HDC) NULL;
393: HANDLE ghMetaf = NULL;
394: HBITMAP ghBmp = NULL, ghBmpMask = NULL;
395:
396: #if 0 // STRICT doesn't like this
397: HBITMAP ghBmpDn[OD_BTN_CNT], ghBmpUp[OD_BTN_CNT];
398: HBITMAP ghToolBmpDn[OD_TOOL_CNT], ghToolBmpUp[OD_TOOL_CNT];
399: #endif
400: PVOID ghBmpDn[OD_BTN_CNT], ghBmpUp[OD_BTN_CNT];
401: PVOID ghToolBmpDn[OD_TOOL_CNT], ghToolBmpUp[OD_TOOL_CNT];
402:
403: HBRUSH ghbrRed;
404: HBRUSH ghbrCur;
405: HPEN ghpnCur;
406: HBRUSH ghbrAppBkgd;
407: HPEN ghpnWide;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.