home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 19
/
CD_ASCQ_19_010295.iso
/
vrac
/
mfedit32.zip
/
MFEDIT.H
< prev
next >
Wrap
C/C++ Source or Header
|
1994-09-04
|
18KB
|
507 lines
/******************************Module*Header*******************************\
* Module Name: mfedit.h
*
* Header file for mfedit
*
* Created: 28-May-1992 14:57:56
* Author: Petrus Wong
*
* Copyright (c) 1990 Microsoft Corporation
*
* Contains all the definitions, global variables, structures, etc
*
* Dependencies:
*
* metadef.h
*
\**************************************************************************/
#include <windows.h>
#include <string.h>
#define LIGHTGRAY RGB(192, 192, 192)
#define DARKGRAY RGB(128, 128, 128)
#define MAX_POINTS 256
#define MAX_POINTS_MF 3
#define MAX_POINTS_BMP 3
#define MAX_FRAME 800
#define MAX_FILE 800
//
// Menu ID's
//
#define MM_LOAD 7001
#define MM_RECORD 7002
#define MM_PRINT 7003
#define MM_PAGESETUP 7004
#define MM_PRINTSETUP 7005
#define MM_ABOUT 7006
#define MM_CUT 7007
#define MM_COPY 7008
#define MM_PASTE 7009
#define MM_DEL 7010
#define MM_LOAD_BMP 7011
#define MM_SAVE_BMP 7012
#define MM_LOAD_MASKBMP 7013
#define MM_REMOVE 7014
#define MM_INSERT 7015
#define MM_HITTEST 7016
#define MM_REPEAT 7017
#define MM_INCREASE 7018
#define MM_NORMAL 7019
#define MM_DECREASE 7020
#define MM_PEN 7021
#define MM_BRUSH 7022
#define MM_FONT 7023
#define MM_LEABOUT 7024
#define MM_FIT2WND 7025
#define MM_IMPORT_3X 7026
#define MM_EXPORT_3X 7027
#define MM_TTOUTLN_STROKEFILL 7028
#define MM_TTOUTLN_POLYDRAW 7029
#define MM_C_WND_MF 7030
#define MM_C_BEGIN_GP 7031
#define MM_C_END_GP 7032
#define MM_C_MLTFMTS 7033
#define SIZEOFCAPTIONTEXT 20
#define ACCEL_ID 100
#define APP_ICON 100
//
// Control Panel ID's
//
#define OD_BTN_CNT 5
#define DID_CTRLPANEL 100
#define DID_ZERO 1000
#define DID_ONE 1001
#define DID_TWO 1002
#define DID_THREE 1003
#define DID_FOUR 1004
#define DID_FIVE 1005
#define DID_SIX 1006
#define DID_SEVEN 1007
#define DID_EIGHT 1008
#define DID_NINE 1009
#define DID_TEN_PLUS 1010
#define ID_OD_BTN_BASE 1011
#define DID_OPEN 1011
#define DID_RECORD 1012
#define DID_STOP 1013
#define DID_PLAY 1014
#define DID_FF 1015
#define DID_CLEAR 1016
#define DID_COUNTER 1017
#define DID_TMP 1018
//
// Control Panel's Owner draw bitmaps
//
#define BMID_BASED 1011
#define BMID_OPEND 1011
#define BMID_RECORDD 1012
#define BMID_STOPD 1013
#define BMID_PLAYD 1014
#define BMID_FFD 1015
#define BMID_BASEU 2011
#define BMID_OPENU 2011
#define BMID_RECORDU 2012
#define BMID_STOPU 2013
#define BMID_PLAYU 2014
#define BMID_FFU 2015
//
// Tools ID's
//
#define OD_TOOL_CNT 10
#define ID_OD_TOOL_BASE 3001
#define DID_PEN 3001
#define DID_TEXT 3002
#define DID_RECT 3003
#define DID_FILLRECT 3004
#define DID_ELLIPSE 3005
#define DID_FILLELLIPSE 3006
#define DID_LINE 3007
#define DID_BEZIER 3008
#define DID_BMPOBJ 3009
#define DID_METAF 3010
//
// Tools Owner Draw bitmaps
//
#define BMID_TOOLBASED 3001
#define BMID_PEND 3001
#define BMID_TEXTD 3002
#define BMID_RECTD 3003
#define BMID_FILLRECTD 3004
#define BMID_ELLIPSED 3005
#define BMID_FILLELLIPSED 3006
#define BMID_LINED 3007
#define BMID_BEZIERD 3008
#define BMID_BMPOBJD 3009
#define BMID_METAFD 3010
#define BMID_TOOLBASEU 4001
#define BMID_PENU 4001
#define BMID_TEXTU 4002
#define BMID_RECTU 4003
#define BMID_FILLRECTU 4004
#define BMID_ELLIPSEU 4005
#define BMID_FILLELLIPSEU 4006
#define BMID_LINEU 4007
#define BMID_BEZIERU 4008
#define BMID_BMPOBJU 4009
#define BMID_METAFU 4010
#define MR_MIN 1
#define MR_METAFILE 1
#define MR_POLYBEZIER 2
#define MR_POLYGON 3
#define MR_POLYLINE 4
#define MR_POLYBEZIERTO 5
#define MR_POLYLINETO 6
#define MR_POLYPOLYLINE 7
#define MR_POLYPOLYGON 8
#define MR_SETWINDOWEXTEX 9
#define MR_SETWINDOWORGEX 10
#define MR_SETVIEWPORTEXTEX 11
#define MR_SETVIEWPORTORGEX 12
#define MR_SETBRUSHORGEX 13
#define MR_EOF 14
#define MR_SETPIXELV 15
#define MR_SETMAPPERFLAGS 16
#define MR_SETMAPMODE 17
#define MR_SETBKMODE 18
#define MR_SETPOLYFILLMODE 19
#define MR_SETROP2 20
#define MR_SETSTRETCHBLTMODE 21
#define MR_SETTEXTALIGN 22
#define MR_SETTEXTCOLOR 24
#define MR_SETBKCOLOR 25
#define MR_OFFSETCLIPRGN 26
#define MR_MOVETOEX 27
#define MR_SETMETARGN 28
#define MR_EXCLUDECLIPRECT 29
#define MR_INTERSECTCLIPRECT 30
#define MR_SCALEVIEWPORTEXTEX 31
#define MR_SCALEWINDOWEXTEX 32
#define MR_SAVEDC 33
#define MR_RESTOREDC 34
#define MR_SETWORLDTRANSFORM 35
#define MR_MODIFYWORLDTRANSFORM 36
#define MR_SELECTOBJECT 37
#define MR_CREATEPEN 38
#define MR_CREATEBRUSHINDIRECT 39
#define MR_DELETEOBJECT 40
#define MR_ANGLEARC 41
#define MR_ELLIPSE 42
#define MR_RECTANGLE 43
#define MR_ROUNDRECT 44
#define MR_ARC 45
#define MR_CHORD 46
#define MR_PIE 47
#define MR_SELECTPALETTE 48
#define MR_CREATEPALETTE 49
#define MR_SETPALETTEENTRIES 50
#define MR_RESIZEPALETTE 51
#define MR_REALIZEPALETTE 52
#define MR_EXTFLOODFILL 53
#define MR_LINETO 54
#define MR_ARCTO 55
#define MR_POLYDRAW 56
#define MR_SETARCDIRECTION 57
#define MR_SETMITERLIMIT 58
#define MR_BEGINPATH 59
#define MR_ENDPATH 60
#define MR_CLOSEFIGURE 61
#define MR_FILLPATH 62
#define MR_STROKEANDFILLPATH 63
#define MR_STROKEPATH 64
#define MR_FLATTENPATH 65
#define MR_WIDENPATH 66
#define MR_SELECTCLIPPATH 67
#define MR_ABORTPATH 68
#define MR_GDICOMMENT 70
#define MR_FILLRGN 71
#define MR_FRAMERGN 72
#define MR_INVERTRGN 73
#define MR_PAINTRGN 74
#define MR_EXTSELECTCLIPRGN 75
#define MR_BITBLT 76
#define MR_STRETCHBLT 77
#define MR_MASKBLT 78
#define MR_PLGBLT 79
#define MR_SETDIBITSTODEVICE 80
#define MR_STRETCHDIBITS 81
#define MR_EXTCREATEFONTINDIRECTW 82
#define MR_EXTTEXTOUTA 83
#define MR_EXTTEXTOUTW 84
#define MR_POLYBEZIER16 85
#define MR_POLYGON16 86
#define MR_POLYLINE16 87
#define MR_POLYBEZIERTO16 88
#define MR_POLYLINETO16 89
#define MR_POLYPOLYLINE16 90
#define MR_POLYPOLYGON16 91
#define MR_POLYDRAW16 92
#define MR_CREATEMONOBRUSH 93
#define MR_CREATEDIBPATTERNBRUSHPT 94
#define MR_EXTCREATEPEN 95
#define MR_MAX 95
//
// some handy macros
//
#define GET_WM_CTLCOLOR_HDC(wp, lp, msg) (HDC)(wp)
#define GET_WM_CTLCOLOR_HWND(wp, lp, msg) (HWND)(lp)
#define GET_WM_CTLCOLOR_TYPE(wp, lp, msg) (WORD)(msg - WM_CTLCOLORMSGBOX)
#define META32_SIGNATURE 0x464D4520 // ' EMF'
#define ALDUS_ID 0x9AC6CDD7
typedef struct
{
DWORD key;
WORD hmf;
SMALL_RECT bbox;
WORD inch;
DWORD reserved;
WORD checksum;
} APMFILEHEADER;
typedef APMFILEHEADER * PAPMFILEHEADER;
#define APMSIZE 22
#ifndef RC_INVOKED
#pragma pack(2)
typedef struct tagMETA16HEADER
{
WORD mtType;
WORD mtHeaderSize;
WORD mtVersion;
DWORD mtSize;
WORD mtNoObjects;
DWORD mtMaxRecord;
WORD mtNoParameters;
} META16HEADER, LPMETA16HEADER;
#pragma pack()
#endif // RC_INVOKED
typedef struct _playinfo {
int iRecord;
BOOL bPlayContinuous;
} PLAYINFO;
typedef struct _metalookup {
LPSTR szGDIName;
int iMRNumber;
} METALOOKUP;
typedef struct _htdata {
POINT point;
int iRecord;
} HTDATA;
METALOOKUP rgMetaName[] =
{
{ " ", 0 },
{ "METAFILE ", MR_METAFILE },
{ "POLYBEZIER ", MR_POLYBEZIER },
{ "POLYGON ", MR_POLYGON },
{ "POLYLINE ", MR_POLYLINE },
{ "POLYBEZIERTO ", MR_POLYBEZIERTO },
{ "POLYLINETO ", MR_POLYLINETO },
{ "POLYPOLYLINE ", MR_POLYPOLYLINE },
{ "POLYPOLYGON ", MR_POLYPOLYGON },
{ "SETWINDOWEXTEX ", MR_SETWINDOWEXTEX },
{ "SETWINDOWORGEX ", MR_SETWINDOWORGEX },
{ "SETVIEWPORTEXTEX ", MR_SETVIEWPORTEXTEX },
{ "SETVIEWPORTORGEX ", MR_SETVIEWPORTORGEX },
{ "SETBRUSHORGEX ", MR_SETBRUSHORGEX },
{ "EOF ", MR_EOF },
{ "SETPIXELV ", MR_SETPIXELV },
{ "SETMAPPERFLAGS ", MR_SETMAPPERFLAGS },
{ "SETMAPMODE ", MR_SETMAPMODE },
{ "SETBKMODE ", MR_SETBKMODE },
{ "SETPOLYFILLMODE ", MR_SETPOLYFILLMODE },
{ "SETROP2 ", MR_SETROP2 },
{ "SETSTRETCHBLTMODE ", MR_SETSTRETCHBLTMODE },
{ "SETTEXTALIGN ", MR_SETTEXTALIGN },
{ "UNKNOWN ", 23 },
{ "SETTEXTCOLOR ", MR_SETTEXTCOLOR },
{ "SETBKCOLOR ", MR_SETBKCOLOR },
{ "OFFSETCLIPRGN ", MR_OFFSETCLIPRGN },
{ "MOVETOEX ", MR_MOVETOEX },
{ "SETMETARGN ", MR_SETMETARGN },
{ "EXCLUDECLIPRECT ", MR_EXCLUDECLIPRECT },
{ "INTERSECTCLIPRECT ", MR_INTERSECTCLIPRECT },
{ "SCALEVIEWPORTEXTEX ", MR_SCALEVIEWPORTEXTEX },
{ "SCALEWINDOWEXTEX ", MR_SCALEWINDOWEXTEX },
{ "SAVEDC ", MR_SAVEDC },
{ "RESTOREDC ", MR_RESTOREDC },
{ "SETWORLDTRANSFORM ", MR_SETWORLDTRANSFORM },
{ "MODIFYWORLDTRANSFORM ", MR_MODIFYWORLDTRANSFORM },
{ "SELECTOBJECT ", MR_SELECTOBJECT },
{ "CREATEPEN ", MR_CREATEPEN },
{ "CREATEBRUSHINDIRECT ", MR_CREATEBRUSHINDIRECT },
{ "DELETEOBJECT ", MR_DELETEOBJECT },
{ "ANGLEARC ", MR_ANGLEARC },
{ "ELLIPSE ", MR_ELLIPSE },
{ "RECTANGLE ", MR_RECTANGLE },
{ "ROUNDRECT ", MR_ROUNDRECT },
{ "ARC ", MR_ARC },
{ "CHORD ", MR_CHORD },
{ "PIE ", MR_PIE },
{ "SELECTPALETTE ", MR_SELECTPALETTE },
{ "CREATEPALETTE ", MR_CREATEPALETTE },
{ "SETPALETTEENTRIES ", MR_SETPALETTEENTRIES },
{ "RESIZEPALETTE ", MR_RESIZEPALETTE },
{ "REALIZEPALETTE ", MR_REALIZEPALETTE },
{ "EXTFLOODFILL ", MR_EXTFLOODFILL },
{ "LINETO ", MR_LINETO },
{ "ARCTO ", MR_ARCTO },
{ "POLYDRAW ", MR_POLYDRAW },
{ "SETARCDIRECTION ", MR_SETARCDIRECTION },
{ "SETMITERLIMIT ", MR_SETMITERLIMIT },
{ "BEGINPATH ", MR_BEGINPATH },
{ "ENDPATH ", MR_ENDPATH },
{ "CLOSEFIGURE ", MR_CLOSEFIGURE },
{ "FILLPATH ", MR_FILLPATH },
{ "STROKEANDFILLPATH ", MR_STROKEANDFILLPATH },
{ "STROKEPATH ", MR_STROKEPATH },
{ "FLATTENPATH ", MR_FLATTENPATH },
{ "WIDENPATH ", MR_WIDENPATH },
{ "SELECTCLIPPATH ", MR_SELECTCLIPPATH },
{ "ABORTPATH ", MR_ABORTPATH },
{ "UNKNOWN ", 69 },
{ "GDICOMMENT ", MR_GDICOMMENT },
{ "FILLRGN ", MR_FILLRGN },
{ "FRAMERGN ", MR_FRAMERGN },
{ "INVERTRGN ", MR_INVERTRGN },
{ "PAINTRGN ", MR_PAINTRGN },
{ "EXTSELECTCLIPRGN ", MR_EXTSELECTCLIPRGN },
{ "BITBLT ", MR_BITBLT },
{ "STRETCHBLT ", MR_STRETCHBLT },
{ "MASKBLT ", MR_MASKBLT },
{ "PLGBLT ", MR_PLGBLT },
{ "SETDIBITSTODEVICE ", MR_SETDIBITSTODEVICE },
{ "STRETCHDIBITS ", MR_STRETCHDIBITS },
{ "EXTCREATEFONTINDIRECTW ", MR_EXTCREATEFONTINDIRECTW },
{ "EXTTEXTOUTA ", MR_EXTTEXTOUTA },
{ "EXTTEXTOUTW ", MR_EXTTEXTOUTW },
{ "POLYBEZIER16 ", MR_POLYBEZIER16 },
{ "POLYGON16 ", MR_POLYGON16 },
{ "POLYLINE16 ", MR_POLYLINE16 },
{ "POLYBEZIERTO16 ", MR_POLYBEZIERTO16 },
{ "POLYLINETO16 ", MR_POLYLINETO16 },
{ "POLYPOLYLINE16 ", MR_POLYPOLYLINE16 },
{ "POLYPOLYGON16 ", MR_POLYPOLYGON16 },
{ "POLYDRAW16 ", MR_POLYDRAW16 },
{ "CREATEMONOBRUSH ", MR_CREATEMONOBRUSH },
{ "CREATEDIBPATTERNBRUSHPT ", MR_CREATEDIBPATTERNBRUSHPT},
{ "EXTCREATEPEN ", MR_EXTCREATEPEN },
};
typedef struct _PRTDATA {
BOOL bFit2Wnd;
HENHMETAFILE hMetaf;
} PRTDATA, *PPRTDATA;
HANDLE ghModule;
HWND ghwndMain = NULL;
HWND ghwndClient = NULL;
HWND ghwndDrawSurf = NULL;
HWND ghwndCtrlPanel = NULL;
HWND ghwndTools = NULL;
HWND ghTextWnd = NULL;
HPALETTE ghPal = NULL;
HPALETTE ghHT = NULL;
LONG glcyStatus;
BOOL gbRecording = FALSE;
BOOL gbHitTest = FALSE;
#if 0 // STRICT doesn't like this
HWND grHwndCtrlBtn[OD_BTN_CNT];
HWND grHwndToolBtn[OD_TOOL_CNT];
#endif
PVOID grHwndCtrlBtn[OD_BTN_CNT];
PVOID grHwndToolBtn[OD_TOOL_CNT];
DWORD gdwCurCtrl = DID_STOP;
DWORD gdwCurTool = DID_PEN;
HFONT ghCurFont;
LOGFONT glf;
COLORREF gCrText=0; // Black
HMENU hMenu, hMenuWindow;
HMENU hChildMenu, hChildMenuWindow;
HDC ghDCMem;
HDC ghDCMetaf = (HDC) NULL;
HENHMETAFILE ghMetaf = NULL;
HMETAFILE ghmf=NULL;
HBITMAP ghBmp = NULL, ghBmpMask = NULL;
#if 0 // STRICT doesn't like this
HBITMAP ghBmpDn[OD_BTN_CNT], ghBmpUp[OD_BTN_CNT];
HBITMAP ghToolBmpDn[OD_TOOL_CNT], ghToolBmpUp[OD_TOOL_CNT];
#endif
PVOID ghBmpDn[OD_BTN_CNT], ghBmpUp[OD_BTN_CNT];
PVOID ghToolBmpDn[OD_TOOL_CNT], ghToolBmpUp[OD_TOOL_CNT];
HBRUSH ghbrRed;
HBRUSH ghbrCur;
HPEN ghpnCur;
HBRUSH ghbrAppBkgd;
HPEN ghpnWide;
HWND ghwndNext = NULL;
BOOL gbFit2Wnd = TRUE;
BOOL gbImport3X = FALSE;
BOOL gbExport3X = FALSE;
BOOL gbSFOutln = FALSE;
BOOL gbPDOutln = FALSE;
BOOL gbTT = FALSE;
BOOL gbUseDIB = FALSE;
typedef struct _FileInfo{
HANDLE hFile;
HANDLE hMapFile;
LPVOID lpvMapView;
} FILEINFO, *PFILEINFO;
typedef struct _DIBDATA{
ULONG ulFiles;
ULONG ulFrames;
FILEINFO rgFileInfo[MAX_FILE];
PBYTE rgpjFrame[MAX_FRAME];
PBITMAPINFO rgpbmi[MAX_FILE];
BOOL rgbCoreHdr[MAX_FILE];
} DIBDATA, *PDIBDATA;
DIBDATA gDib;
typedef struct tagCMTMLTFMT {
DWORD ident;
DWORD iComment;
RECTL rclOutput;
DWORD nFormats;
EMRFORMAT aemrformat[1];
} CMTMLTFMT;
#define GDICOMMENT_IDENTIFIER 0x43494447
#define GDICOMMENT_MULTIFORMATS 0x40000004