|
|
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.