📄 wingdi.pas
字号:
mm: LONG;
xExt: LONG;
yExt: LONG;
hMF: HMETAFILE;
end;
{$EXTERNALSYM tagMETAFILEPICT}
METAFILEPICT = tagMETAFILEPICT;
{$EXTERNALSYM METAFILEPICT}
LPMETAFILEPICT = ^METAFILEPICT;
{$EXTERNALSYM LPMETAFILEPICT}
TMetaFilePict = METAFILEPICT;
// #include <pshpack2.h>
PMetaHeader = ^TMetaHeader;
tagMETAHEADER = packed record
mtType: WORD;
mtHeaderSize: WORD;
mtVersion: WORD;
mtSize: DWORD;
mtNoObjects: WORD;
mtMaxRecord: DWORD;
mtNoParameters: WORD;
end;
{$EXTERNALSYM tagMETAHEADER}
METAHEADER = tagMETAHEADER;
{$EXTERNALSYM METAHEADER}
LPMETAHEADER = ^METAHEADER;
{$EXTERNALSYM LPMETAHEADER}
TMetaHeader = METAHEADER;
// #include <poppack.h>
// Enhanced Metafile structures
PEnhMetaRecord = ^TEnhMetaRecord;
tagENHMETARECORD = record
iType: DWORD; // Record type EMR_XXX
nSize: DWORD; // Record size in bytes
dParm: array [0..0] of DWORD; // Parameters
end;
{$EXTERNALSYM tagENHMETARECORD}
ENHMETARECORD = tagENHMETARECORD;
{$EXTERNALSYM ENHMETARECORD}
LPENHMETARECORD = ^ENHMETARECORD;
{$EXTERNALSYM LPENHMETARECORD}
TEnhMetaRecord = ENHMETARECORD;
PEnhMetaHeader = ^TEnhMetaHeader;
tagENHMETAHEADER = record
iType: DWORD; // Record type EMR_HEADER
nSize: DWORD; // Record size in bytes. This may be greater
// than the sizeof(ENHMETAHEADER).
rclBounds: RECTL; // Inclusive-inclusive bounds in device units
rclFrame: RECTL; // Inclusive-inclusive Picture Frame of metafile in .01 mm units
dSignature: DWORD; // Signature. Must be ENHMETA_SIGNATURE.
nVersion: DWORD; // Version number
nBytes: DWORD; // Size of the metafile in bytes
nRecords: DWORD; // Number of records in the metafile
nHandles: WORD; // Number of handles in the handle table
// Handle index zero is reserved.
sReserved: WORD; // Reserved. Must be zero.
nDescription: DWORD; // Number of chars in the unicode description string
// This is 0 if there is no description string
offDescription: DWORD; // Offset to the metafile description record.
// This is 0 if there is no description string
nPalEntries: DWORD; // Number of entries in the metafile palette.
szlDevice: SIZEL; // Size of the reference device in pels
szlMillimeters: SIZEL; // Size of the reference device in millimeters
{$IFDEF WINVER_0400_GREATER}
cbPixelFormat: DWORD; // Size of PIXELFORMATDESCRIPTOR information
// This is 0 if no pixel format is set
offPixelFormat: DWORD; // Offset to PIXELFORMATDESCRIPTOR
// This is 0 if no pixel format is set
bOpenGL: DWORD; // TRUE if OpenGL commands are present in
// the metafile, otherwise FALSE
{$ENDIF}
{$IFDEF WINVER_0500_GREATER}
szlMicrometers: SIZEL; // Size of the reference device in micrometers
{$ENDIF}
end;
{$EXTERNALSYM tagENHMETAHEADER}
ENHMETAHEADER = tagENHMETAHEADER;
{$EXTERNALSYM ENHMETAHEADER}
LPENHMETAHEADER = ^ENHMETAHEADER;
{$EXTERNALSYM LPENHMETAHEADER}
TEnhMetaHeader = tagENHMETAHEADER;
// tmPitchAndFamily flags
const
TMPF_FIXED_PITCH = $01;
{$EXTERNALSYM TMPF_FIXED_PITCH}
TMPF_VECTOR = $02;
{$EXTERNALSYM TMPF_VECTOR}
TMPF_DEVICE = $08;
{$EXTERNALSYM TMPF_DEVICE}
TMPF_TRUETYPE = $04;
{$EXTERNALSYM TMPF_TRUETYPE}
//
// BCHAR definition for APPs
//
type
{$IFDEF UNICODE}
BCHAR = WCHAR;
{$EXTERNALSYM BCHAR}
{$ELSE}
BCHAR = BYTE;
{$EXTERNALSYM BCHAR}
{$ENDIF}
type
PTextMetricA = ^TTextMetricA;
tagTEXTMETRICA = record
tmHeight: LONG;
tmAscent: LONG;
tmDescent: LONG;
tmInternalLeading: LONG;
tmExternalLeading: LONG;
tmAveCharWidth: LONG;
tmMaxCharWidth: LONG;
tmWeight: LONG;
tmOverhang: LONG;
tmDigitizedAspectX: LONG;
tmDigitizedAspectY: LONG;
tmFirstChar: BYTE;
tmLastChar: BYTE;
tmDefaultChar: BYTE;
tmBreakChar: BYTE;
tmItalic: BYTE;
tmUnderlined: BYTE;
tmStruckOut: BYTE;
tmPitchAndFamily: BYTE;
tmCharSet: BYTE;
end;
{$EXTERNALSYM tagTEXTMETRICA}
TEXTMETRICA = tagTEXTMETRICA;
{$EXTERNALSYM TEXTMETRICA}
LPTEXTMETRICA = ^TEXTMETRICA;
{$EXTERNALSYM LPTEXTMETRICA}
NPTEXTMETRICA = ^TEXTMETRICA;
{$EXTERNALSYM NPTEXTMETRICA}
TTextMetricA = TEXTMETRICA;
PTextMetricW = ^TTextMetricW;
tagTEXTMETRICW = record
tmHeight: LONG;
tmAscent: LONG;
tmDescent: LONG;
tmInternalLeading: LONG;
tmExternalLeading: LONG;
tmAveCharWidth: LONG;
tmMaxCharWidth: LONG;
tmWeight: LONG;
tmOverhang: LONG;
tmDigitizedAspectX: LONG;
tmDigitizedAspectY: LONG;
tmFirstChar: WCHAR;
tmLastChar: WCHAR;
tmDefaultChar: WCHAR;
tmBreakChar: WCHAR;
tmItalic: BYTE;
tmUnderlined: BYTE;
tmStruckOut: BYTE;
tmPitchAndFamily: BYTE;
tmCharSet: BYTE;
end;
{$EXTERNALSYM tagTEXTMETRICW}
TEXTMETRICW = tagTEXTMETRICW;
{$EXTERNALSYM TEXTMETRICW}
LPTEXTMETRICW = ^TEXTMETRICW;
{$EXTERNALSYM LPTEXTMETRICW}
NPTEXTMETRICW = ^TEXTMETRICW;
{$EXTERNALSYM NPTEXTMETRICW}
TTextMetricW = TEXTMETRICW;
{$IFDEF UNICODE}
TEXTMETRIC = TEXTMETRICW;
{$EXTERNALSYM TEXTMETRIC}
PTEXTMETRIC = PTEXTMETRICW;
{$EXTERNALSYM PTEXTMETRIC}
NPTEXTMETRIC = NPTEXTMETRICW;
{$EXTERNALSYM NPTEXTMETRIC}
LPTEXTMETRIC = LPTEXTMETRICW;
{$EXTERNALSYM LPTEXTMETRIC}
TTextMetric = TTextMetricW;
{$ELSE}
TEXTMETRIC = TEXTMETRICA;
{$EXTERNALSYM TEXTMETRIC}
NPTEXTMETRIC = NPTEXTMETRICA;
{$EXTERNALSYM NPTEXTMETRIC}
LPTEXTMETRIC = LPTEXTMETRICA;
{$EXTERNALSYM LPTEXTMETRIC}
TTextMetric = TTextMetricA;
{$ENDIF}
// ntmFlags field flags
const
NTM_REGULAR = $00000040;
{$EXTERNALSYM NTM_REGULAR}
NTM_BOLD = $00000020;
{$EXTERNALSYM NTM_BOLD}
NTM_ITALIC = $00000001;
{$EXTERNALSYM NTM_ITALIC}
// new in NT 5.0
NTM_NONNEGATIVE_AC = $00010000;
{$EXTERNALSYM NTM_NONNEGATIVE_AC}
NTM_PS_OPENTYPE = $00020000;
{$EXTERNALSYM NTM_PS_OPENTYPE}
NTM_TT_OPENTYPE = $00040000;
{$EXTERNALSYM NTM_TT_OPENTYPE}
NTM_MULTIPLEMASTER = $00080000;
{$EXTERNALSYM NTM_MULTIPLEMASTER}
NTM_TYPE1 = $00100000;
{$EXTERNALSYM NTM_TYPE1}
NTM_DSIG = $00200000;
{$EXTERNALSYM NTM_DSIG}
// #include <pshpack4.h>
type
PNewTextMetricA = ^TNewTextMetricA;
tagNEWTEXTMETRICA = record
tmHeight: LONG;
tmAscent: LONG;
tmDescent: LONG;
tmInternalLeading: LONG;
tmExternalLeading: LONG;
tmAveCharWidth: LONG;
tmMaxCharWidth: LONG;
tmWeight: LONG;
tmOverhang: LONG;
tmDigitizedAspectX: LONG;
tmDigitizedAspectY: LONG;
tmFirstChar: BYTE;
tmLastChar: BYTE;
tmDefaultChar: BYTE;
tmBreakChar: BYTE;
tmItalic: BYTE;
tmUnderlined: BYTE;
tmStruckOut: BYTE;
tmPitchAndFamily: BYTE;
tmCharSet: BYTE;
ntmFlags: DWORD;
ntmSizeEM: UINT;
ntmCellHeight: UINT;
ntmAvgWidth: UINT;
end;
{$EXTERNALSYM tagNEWTEXTMETRICA}
NEWTEXTMETRICA = tagNEWTEXTMETRICA;
{$EXTERNALSYM NEWTEXTMETRICA}
LPNEWTEXTMETRICA = ^NEWTEXTMETRICA;
{$EXTERNALSYM LPNEWTEXTMETRICA}
NPNEWTEXTMETRICA = ^NEWTEXTMETRICA;
{$EXTERNALSYM NPNEWTEXTMETRICA}
TNewTextMetricA = NEWTEXTMETRICA;
PNewTextMetricW = ^TNewTextMetricW;
tagNEWTEXTMETRICW = record
tmHeight: LONG;
tmAscent: LONG;
tmDescent: LONG;
tmInternalLeading: LONG;
tmExternalLeading: LONG;
tmAveCharWidth: LONG;
tmMaxCharWidth: LONG;
tmWeight: LONG;
tmOverhang: LONG;
tmDigitizedAspectX: LONG;
tmDigitizedAspectY: LONG;
tmFirstChar: WCHAR;
tmLastChar: WCHAR;
tmDefaultChar: WCHAR;
tmBreakChar: WCHAR;
tmItalic: BYTE;
tmUnderlined: BYTE;
tmStruckOut: BYTE;
tmPitchAndFamily: BYTE;
tmCharSet: BYTE;
ntmFlags: DWORD;
ntmSizeEM: UINT;
ntmCellHeight: UINT;
ntmAvgWidth: UINT;
end;
{$EXTERNALSYM tagNEWTEXTMETRICW}
NEWTEXTMETRICW = tagNEWTEXTMETRICW;
{$EXTERNALSYM NEWTEXTMETRICW}
LPNEWTEXTMETRICW = ^NEWTEXTMETRICW;
{$EXTERNALSYM LPNEWTEXTMETRICW}
NPNEWTEXTMETRICW = ^NEWTEXTMETRICW;
{$EXTERNALSYM NPNEWTEXTMETRICW}
TNewTextMetricW = NEWTEXTMETRICW;
{$IFDEF UNICODE}
NEWTEXTMETRIC = NEWTEXTMETRICW;
{$EXTERNALSYM NEWTEXTMETRIC}
PNEWTEXTMETRIC = PNEWTEXTMETRICW;
{$EXTERNALSYM PNEWTEXTMETRIC}
NPNEWTEXTMETRIC = NPNEWTEXTMETRICW;
{$EXTERNALSYM NPNEWTEXTMETRIC}
LPNEWTEXTMETRIC = LPNEWTEXTMETRICW;
{$EXTERNALSYM LPNEWTEXTMETRIC}
TNewTextMetric = TNewTextMetricW;
{$ELSE}
NEWTEXTMETRIC = NEWTEXTMETRICW;
{$EXTERNALSYM NEWTEXTMETRIC}
PNEWTEXTMETRIC = PNEWTEXTMETRICW;
{$EXTERNALSYM PNEWTEXTMETRIC}
NPNEWTEXTMETRIC = NPNEWTEXTMETRICW;
{$EXTERNALSYM NPNEWTEXTMETRIC}
LPNEWTEXTMETRIC = LPNEWTEXTMETRICW;
{$EXTERNALSYM LPNEWTEXTMETRIC}
TNewTextMetric = TNewTextMetricW;
{$ENDIF}
// #include <poppack.h>
PNewTextMetricExA = ^TNewTextMetricExA;
tagNEWTEXTMETRICEXA = record
ntmTm: NEWTEXTMETRICA;
ntmFontSig: FONTSIGNATURE;
end;
{$EXTERNALSYM tagNEWTEXTMETRICEXA}
NEWTEXTMETRICEXA = tagNEWTEXTMETRICEXA;
{$EXTERNALSYM NEWTEXTMETRICEXA}
TNewTextMetricExA = NEWTEXTMETRICEXA;
PNewTextMetricExW = ^TNewTextMetricExW;
tagNEWTEXTMETRICEXW = record
ntmTm: NEWTEXTMETRICW;
ntmFontSig: FONTSIGNATURE;
end;
{$EXTERNALSYM tagNEWTEXTMETRICEXW}
NEWTEXTMETRICEXW = tagNEWTEXTMETRICEXW;
{$EXTERNALSYM NEWTEXTMETRICEXW}
TNewTextMetricExW = NEWTEXTMETRICEXW;
{$IFDEF UNICODE}
NEWTEXTMETRICEX = NEWTEXTMETRICEXW;
{$EXTERNALSYM NEWTEXTMETRICEX}
TNewTextMetricEx = TNewTextMetricExW;
PNewTextMetricEx = PNewTextMetricExW;
{$ELSE}
NEWTEXTMETRICEX = NEWTEXTMETRICEXA;
{$EXTERNALSYM NEWTEXTMETRICEX}
TNewTextMetricEx = TNewTextMetricExA;
PNewTextMetricEx = PNewTextMetricExA;
{$ENDIF}
// GDI Logical Objects:
// Pel Array
PPelArray = ^TPelArray;
tagPELARRAY = record
paXCount: LONG;
paYCount: LONG;
paXExt: LONG;
paYExt: LONG;
paRGBs: BYTE;
end;
{$EXTERNALSYM tagPELARRAY}
PELARRAY = tagPELARRAY;
{$EXTERNALSYM PELARRAY}
LPPELARRAY = ^PELARRAY;
{$EXTERNALSYM LPPELARRAY}
TPelArray = PELARRAY;
// Logical Brush (or Pattern)
PLogBrush = ^TLogBrush;
tagLOGBRUSH = record
lbStyle: UINT;
lbColor: COLORREF;
lbHatch: ULONG_PTR; // Sundown: lbHatch could hold a HANDLE
end;
{$EXTERNALSYM tagLOGBRUSH}
LOGBRUSH = tagLOGBRUSH;
{$EXTERNALSYM LOGBRUSH}
LPLOGBRUSH = ^LOGBRUSH;
{$EXTERNALSYM LPLOGBRUSH}
NPLOGBRUSH = ^LOGBRUSH;
{$EXTERNALSYM NPLOGBRUSH}
TLogBrush = LOGBRUSH;
PLogBrush32 = ^TLogBrush32;
tagLOGBRUSH32 = record
lbStyle: UINT;
lbColor: COLORREF;
lbHatch: ULONG;
end;
{$EXTERNALSYM tagLOGBRUSH32}
LOGBRUSH32 = tagLOGBRUSH32;
{$EXTERNALSYM LOGBRUSH32}
LPLOGBRUSH32 = ^LOGBRUSH32;
{$EXTERNALSYM LPLOGBRUSH32}
NPLOGBRUSH32 = ^LOGBRUSH32;
{$EXTERNALSYM NPLOGBRUSH32}
TLogBrush32 = LOGBRUSH32;
PATTERN = LOGBRUSH;
{$EXTERNALSYM PATTERN}
PPATTERN = ^PATTERN;
{$EXTERNALSYM PPATTERN}
LPPATTERN = ^PATTERN;
{$EXTERNALSYM LPPATTERN}
NPPATTERN = ^PATTERN;
{$EXTERNALSYM NPPATTERN}
// Logical Pen
PLogPen = ^TLogPen;
tagLOGPEN = record
lopnStyle: UINT;
lopnWidth: POINT;
lopnColor: COLORREF;
end;
{$EXTERNALSYM tagLOGPEN}
LOGPEN = tagLOGPEN;
{$EXTERNALSYM LOGPEN}
LPLOGPEN = ^LOGPEN;
{$EXTERNALSYM LPLOGPEN}
NPLOGPEN = ^LOGPEN;
{$EXTERNALSYM NPLOGPEN}
TLogPen = LOGPEN;
PExtLogPen = ^TExtLogPen;
tagEXTLOGPEN = record
elpPenStyle: DWORD;
elpWidth: DWORD;
elpBrushStyle: UINT;
elpColor: COLORREF;
elpHatch: ULONG_PTR; // Sundown: elpHatch could take a HANDLE
elpNumEntries: DWORD;
elpStyleEntry: array [0..0] of DWORD;
end;
{$EXTERNALSYM tagEXTLOGPEN}
EXTLOGPEN = tagEXTLOGPEN;
{$EXTERNALSYM EXTLOGPEN}
LPEXTLOGPEN = ^EXTLOGPEN;
{$EXTERNALSYM LPEXTLOGPEN}
NPEXTLOGPEN = ^EXTLOGPEN;
{$EXTERNALSYM NPEXTLOGPEN}
TExtLogPen = EXTLOGPEN;
PPaletteEntry = ^TPaletteEntry;
tagPALETTEENTRY = record
peRed: BYTE;
peGreen: BYTE;
peBlue: BYTE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -