Annotation of mstools/samples/mfedit/mfedit.h, revision 1.1.1.2

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.