📄 winddi.h
字号:
LONG x,
LONG y,
FLONG flReserved
);
HSURF APIENTRY DrvEnableSurface(
DHPDEV dhpdev
);
VOID APIENTRY DrvSynchronize(
DHPDEV dhpdev,
RECTL *prcl
);
VOID APIENTRY DrvDisableSurface(
DHPDEV dhpdev
);
VOID APIENTRY DrvDisablePDEV(
DHPDEV dhpdev
);
/* DrvSaveScreenBits - iMode definitions */
#define SS_SAVE 0
#define SS_RESTORE 1
#define SS_FREE 2
ULONG_PTR APIENTRY DrvSaveScreenBits(
SURFOBJ *pso,
ULONG iMode,
ULONG_PTR ident,
RECTL *prcl
);
/*
* Desktops
*/
BOOL APIENTRY DrvAssertMode(
DHPDEV dhpdev,
BOOL bEnable
);
ULONG APIENTRY DrvGetModes(
HANDLE hDriver,
ULONG cjSize,
DEVMODEW *pdm
);
VOID APIENTRY DrvMovePanning(
LONG x,
LONG y,
FLONG fl
);
BOOL APIENTRY DrvPlgBlt(
SURFOBJ *psoTrg,
SURFOBJ *psoSrc,
SURFOBJ *psoMsk,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
COLORADJUSTMENT *pca,
POINTL *pptlBrushOrg,
POINTFIX *pptfx,
RECTL *prcl,
POINTL *pptl,
ULONG iMode
);
/*
* Bitmaps
*/
HBITMAP APIENTRY DrvCreateDeviceBitmap(
DHPDEV dhpdev,
SIZEL sizl,
ULONG iFormat
);
VOID APIENTRY DrvDeleteDeviceBitmap(
DHSURF dhsurf
);
/*
* Palettes
*/
BOOL APIENTRY DrvSetPalette(
DHPDEV dhpdev,
PALOBJ *ppalo,
FLONG fl,
ULONG iStart,
ULONG cColors
);
/*
* Brushes
*/
#define DM_DEFAULT 0x00000001
#define DM_MONOCHROME 0x00000002
#define DCR_SOLID 0
#define DCR_DRIVER 1
#define DCR_HALFTONE 2
ULONG APIENTRY DrvDitherColor(
DHPDEV dhpdev,
ULONG iMode,
ULONG rgb,
ULONG *pul
);
BOOL APIENTRY DrvRealizeBrush(
BRUSHOBJ *pbo,
SURFOBJ *psoTarget,
SURFOBJ *psoPattern,
SURFOBJ *psoMask,
XLATEOBJ *pxlo,
ULONG iHatch
);
#define RB_DITHERCOLOR 0x80000000L
/*
* Fonts
*/
PIFIMETRICS APIENTRY DrvQueryFont(
DHPDEV dhpdev,
ULONG_PTR iFile,
ULONG iFace,
ULONG *pid
);
// #define QFT_UNICODE 0L
#define QFT_LIGATURES 1L
#define QFT_KERNPAIRS 2L
#define QFT_GLYPHSET 3L
PVOID APIENTRY DrvQueryFontTree(
DHPDEV dhpdev,
ULONG_PTR iFile,
ULONG iFace,
ULONG iMode,
ULONG *pid
);
#define QFD_GLYPHANDBITMAP 1L
#define QFD_GLYPHANDOUTLINE 2L
#define QFD_MAXEXTENTS 3L
#define QFD_TT_GLYPHANDBITMAP 4L
#define QFD_TT_GRAY1_BITMAP 5L
#define QFD_TT_GRAY2_BITMAP 6L
#define QFD_TT_GRAY4_BITMAP 8L
#define QFD_TT_GRAY8_BITMAP 9L
#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
LONG APIENTRY DrvQueryFontData(
DHPDEV dhpdev,
FONTOBJ *pfo,
ULONG iMode,
HGLYPH hg,
GLYPHDATA *pgd,
PVOID pv,
ULONG cjSize
);
VOID APIENTRY DrvFree(
PVOID pv,
ULONG id);
VOID APIENTRY DrvDestroyFont(
FONTOBJ *pfo);
// Capability flags for DrvQueryCaps.
#define QC_OUTLINES 0x00000001
#define QC_1BIT 0x00000002
#define QC_4BIT 0x00000004
//
// This is a mask of the capabilites of a font provider that can return more
// than just glyph metrics (i.e., bitmaps and/or outlines). If a driver has
// one or more of these capabilities, then it is FONT DRIVER.
//
// Drivers should only set individual bits. GDI will check if any are turned on
// using this define.
//
#define QC_FONTDRIVERCAPS ( QC_OUTLINES | QC_1BIT | QC_4BIT )
LONG APIENTRY DrvQueryFontCaps(
ULONG culCaps,
ULONG *pulCaps
);
// fStatus is a new flag NT 5.0
#define FF_SIGNATURE_VERIFIED 0x1
#define FF_IGNORED_SIGNATURE 0x2
ULONG_PTR APIENTRY DrvLoadFontFile(
ULONG cFiles, // number of font files associated with this font
ULONG_PTR *piFile, // handles for individual files, cFiles of them
PVOID *ppvView, // array of cFiles views
ULONG *pcjView, // array of their sizes
DESIGNVECTOR *pdv, // only non null for mm instances
ULONG ulLangID,
ULONG ulFastCheckSum
);
BOOL APIENTRY DrvUnloadFontFile(
ULONG_PTR iFile
);
LONG APIENTRY DrvQueryTrueTypeTable(
ULONG_PTR iFile,
ULONG ulFont,
ULONG ulTag,
PTRDIFF dpStart,
ULONG cjBuf,
BYTE *pjBuf,
PBYTE *ppjTable,
ULONG *pcjTable
);
BOOL APIENTRY DrvQueryAdvanceWidths(
DHPDEV dhpdev,
FONTOBJ *pfo,
ULONG iMode,
HGLYPH *phg,
PVOID pvWidths,
ULONG cGlyphs
);
// Values for iMode
#define QAW_GETWIDTHS 0
#define QAW_GETEASYWIDTHS 1
// values for bMetricsOnly. even though declared as BOOL
// by adding TTO_QUBICS, this is becoming a flag field.
// For versions of NT 4.0 and earlier, this value is always
// set to zero by GDI.
#define TTO_METRICS_ONLY 1
#define TTO_QUBICS 2
#define TTO_UNHINTED 4
LONG APIENTRY DrvQueryTrueTypeOutline(
DHPDEV dhpdev,
FONTOBJ *pfo,
HGLYPH hglyph,
BOOL bMetricsOnly,
GLYPHDATA *pgldt,
ULONG cjBuf,
TTPOLYGONHEADER *ppoly
);
PVOID APIENTRY DrvGetTrueTypeFile (
ULONG_PTR iFile,
ULONG *pcj
);
// values for ulMode:
#define QFF_DESCRIPTION 1L
#define QFF_NUMFACES 2L
LONG APIENTRY DrvQueryFontFile(
ULONG_PTR iFile,
ULONG ulMode,
ULONG cjBuf,
ULONG *pulBuf
);
/*
* BitBlt
*/
BOOL APIENTRY DrvBitBlt(
SURFOBJ *psoTrg,
SURFOBJ *psoSrc,
SURFOBJ *psoMask,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
RECTL *prclTrg,
POINTL *pptlSrc,
POINTL *pptlMask,
BRUSHOBJ *pbo,
POINTL *pptlBrush,
ROP4 rop4
);
BOOL APIENTRY DrvStretchBlt(
SURFOBJ *psoDest,
SURFOBJ *psoSrc,
SURFOBJ *psoMask,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
COLORADJUSTMENT *pca,
POINTL *pptlHTOrg,
RECTL *prclDest,
RECTL *prclSrc,
POINTL *pptlMask,
ULONG iMode
);
BOOL APIENTRY DrvStretchBltROP(
SURFOBJ *psoDest,
SURFOBJ *psoSrc,
SURFOBJ *psoMask,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
COLORADJUSTMENT *pca,
POINTL *pptlHTOrg,
RECTL *prclDest,
RECTL *prclSrc,
POINTL *pptlMask,
ULONG iMode,
BRUSHOBJ *pbo,
DWORD rop4
);
BOOL APIENTRY DrvAlphaBlend(
SURFOBJ *psoDest,
SURFOBJ *psoSrc,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
RECTL *prclDest,
RECTL *prclSrc,
BLENDOBJ *pBlendObj
);
BOOL APIENTRY DrvGradientFill(
SURFOBJ *psoDest,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
TRIVERTEX *pVertex,
ULONG nVertex,
PVOID pMesh,
ULONG nMesh,
RECTL *prclExtents,
POINTL *pptlDitherOrg,
ULONG ulMode
);
BOOL APIENTRY DrvTransparentBlt(
SURFOBJ *psoDst,
SURFOBJ *psoSrc,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
RECTL *prclDst,
RECTL *prclSrc,
ULONG iTransColor,
ULONG ulReserved
);
BOOL APIENTRY DrvCopyBits(
SURFOBJ *psoDest,
SURFOBJ *psoSrc,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
RECTL *prclDest,
POINTL *pptlSrc
);
/*
* Text Output
*/
BOOL APIENTRY DrvTextOut(
SURFOBJ *pso,
STROBJ *pstro,
FONTOBJ *pfo,
CLIPOBJ *pco,
RECTL *prclExtra, // Obsolete, always NULL
RECTL *prclOpaque,
BRUSHOBJ *pboFore,
BRUSHOBJ *pboOpaque,
POINTL *pptlOrg,
MIX mix
);
/*
* Graphics Output
*/
BOOL APIENTRY DrvLineTo(
SURFOBJ *pso,
CLIPOBJ *pco,
BRUSHOBJ *pbo,
LONG x1,
LONG y1,
LONG x2,
LONG y2,
RECTL *prclBounds,
MIX mix
);
BOOL APIENTRY DrvStrokePath(
SURFOBJ *pso,
PATHOBJ *ppo,
CLIPOBJ *pco,
XFORMOBJ *pxo,
BRUSHOBJ *pbo,
POINTL *pptlBrushOrg,
LINEATTRS *plineattrs,
MIX mix
);
#define FP_ALTERNATEMODE 1L
#define FP_WINDINGMODE 2L
BOOL APIENTRY DrvFillPath(
SURFOBJ *pso,
PATHOBJ *ppo,
CLIPOBJ *pco,
BRUSHOBJ *pbo,
POINTL *pptlBrushOrg,
MIX mix,
FLONG flOptions
);
BOOL APIENTRY DrvStrokeAndFillPath(
SURFOBJ *pso,
PATHOBJ *ppo,
CLIPOBJ *pco,
XFORMOBJ *pxo,
BRUSHOBJ *pboStroke,
LINEATTRS *plineattrs,
BRUSHOBJ *pboFill,
POINTL *pptlBrushOrg,
MIX mixFill,
FLONG flOptions
);
BOOL APIENTRY DrvPaint(
SURFOBJ *pso,
CLIPOBJ *pco,
BRUSHOBJ *pbo,
POINTL *pptlBrushOrg,
MIX mix
);
/*
* Pointers
*/
#define SPS_ERROR 0
#define SPS_DECLINE 1
#define SPS_ACCEPT_NOEXCLUDE 2
#define SPS_ACCEPT_EXCLUDE 3 // Obsolete
#define SPS_CHANGE 0x00000001L
#define SPS_ASYNCCHANGE 0x00000002L // Obsolete
#define SPS_ANIMATESTART 0x00000004L
#define SPS_ANIMATEUPDATE 0x00000008L
#define SPS_ALPHA 0x00000010L
ULONG APIENTRY DrvSetPointerShape(
SURFOBJ *pso,
SURFOBJ *psoMask,
SURFOBJ *psoColor,
XLATEOBJ *pxlo,
LONG xHot,
LONG yHot,
LONG x,
LONG y,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -