📄 winddiui.h
字号:
/*++
Copyright (c) 1990-2001 Microsoft Corporation
Module Name:
WinDDIUI.h
Abstract:
Header file for the UI portion of printer drivers.
Revision History:
--*/
#ifndef _WINDDIUI_
#define _WINDDIUI_
#include <compstui.h>
#ifdef __cplusplus
extern "C" {
#endif
//
// DrvDevicePropertySheets replace previous version of PrinterProperties
//
LONG WINAPI
DrvDevicePropertySheets(
PPROPSHEETUI_INFO pPSUIInfo,
LPARAM lParam
);
typedef struct _DEVICEPROPERTYHEADER {
WORD cbSize;
WORD Flags;
HANDLE hPrinter;
LPTSTR pszPrinterName;
} DEVICEPROPERTYHEADER, *PDEVICEPROPERTYHEADER;
#define DPS_NOPERMISSION 0x0001
//
// For document properties replace DocumentProperties.
//
// Note: if pPSUIInfo is NULL then the call need not to display any dialog
// boxes (Ignored the DC_PROMPT bit in the fMode, the lParam in this case
// is a pointer to DOCUMENTPROPERTYHEADER
//
LONG WINAPI
DrvDocumentPropertySheets(
PPROPSHEETUI_INFO pPSUIInfo,
LPARAM lParam
);
typedef struct _DOCUMENTPROPERTYHEADER {
WORD cbSize;
WORD Reserved;
HANDLE hPrinter;
LPTSTR pszPrinterName;
PDEVMODE pdmIn;
PDEVMODE pdmOut;
DWORD cbOut;
DWORD fMode;
} DOCUMENTPROPERTYHEADER, *PDOCUMENTPROPERTYHEADER;
#define DM_ADVANCED 0x10
#define DM_NOPERMISSION 0x20
#define DM_USER_DEFAULT 0x40
// Devmode conversion function used by GetPrinter and SetPrinter
BOOL WINAPI
DrvConvertDevMode(
LPTSTR pPrinterName,
PDEVMODE pdmIn,
PDEVMODE pdmOut,
PLONG pcbNeeded,
DWORD fMode
);
#define CDM_CONVERT 0x01
#define CDM_CONVERT351 0x02
#define CDM_DRIVER_DEFAULT 0x04
//
// This is for DevQueryPrintEx()
//
typedef struct _DEVQUERYPRINT_INFO {
WORD cbSize; // size of this structure in bytes
WORD Level; // Level of this info, 1 for this version
HANDLE hPrinter; // handle to the printer for the query
DEVMODE *pDevMode; // pointer to the DEVMODE for this job.
LPTSTR pszErrorStr; // pointer to the error string buffer.
DWORD cchErrorStr; // count characters of pwErrorStr passed.
DWORD cchNeeded; // count characters of pwErrorStr needed.
} DEVQUERYPRINT_INFO, *PDEVQUERYPRINT_INFO;
BOOL WINAPI
DevQueryPrintEx(
PDEVQUERYPRINT_INFO pDQPInfo
);
//
// This for the DrvUpgradePrinter
//
typedef struct _DRIVER_UPGRADE_INFO_1 {
LPTSTR pPrinterName;
LPTSTR pOldDriverDirectory;
} DRIVER_UPGRADE_INFO_1, *PDRIVER_UPGRADE_INFO_1;
typedef struct _DRIVER_UPGRADE_INFO_2 {
LPTSTR pPrinterName;
LPTSTR pOldDriverDirectory;
DWORD cVersion;
LPTSTR pName;
LPTSTR pEnvironment;
LPTSTR pDriverPath;
LPTSTR pDataFile;
LPTSTR pConfigFile;
LPTSTR pHelpFile;
LPTSTR pDependentFiles;
LPTSTR pMonitorName;
LPTSTR pDefaultDataType;
LPTSTR pszzPreviousNames;
} DRIVER_UPGRADE_INFO_2, *PDRIVER_UPGRADE_INFO_2;
BOOL WINAPI
DrvUpgradePrinter(
DWORD Level,
LPBYTE pDriverUpgradeInfo
);
//
// DrvDocumentEvent
//
//
// Defines and proto-types for hooking GDI printer management functions
//
// return values: -1 means error, 0 means not supported function
//
// CreateDCPre must return > 0 or none of the others will be called.
//
//
// CREATEDCPRE
// return failure from CreateDC if this fails, CREATEDCPOST not called
// bIC - TRUE if came from CreateIC
// output devmode - this is the devmode that actualy gets passed to the
// server side driver. Any data needed in EnablePDEV should be passed
// as part of the DriverExtra.
//
// CREATEDCPOST
// return value is ignored
// the hdc will be 0 if something failed since CREATEDCPRE
// The input buffer contains a pointer to the devmode returned in the
// CREATEDCPRE output buffer
//
// RESETDCPRE
// return failure from ResetDC if this fails, CREATEDCPOST not called
//
// RESETDCPOST
// return value is ignored
//
// STARTDOCPRE
// return failure form StartDoc if this fails, driver not called
//
// STARTDOCPOST
// return failure form StartDoc if this fails, driver already called.
// AbortDoc() called.
//
// STARTPAGE
// return failure form EndPage if this fails, driver not called
//
// ENDPAGE
// return value is ignored, DrvEndPage always called
//
// ENDDOCPRE
// return value is ignored, DrvEndDoc always called
//
// ENDDOCPOST
// return value is ignored, DrvEndDoc has alreadybeen called
//
// ABORTDOC
// return value is ignored
//
// DELETEDC
// return value is ignored
//
// EXTESCAPE
// return value is ignored
// The input buffer includes the ExtEscape escape value, size of input
// buffer to ExtEscape and the input buffer passed in.
// The output buffer is just the buffer that was passed to ExtEscape
//
// DOCUMENTEVENT_SPOOLED
// This flag is added to the iEsc value if the document is being spooled
// to a metafile rather than going direct. Note that if this bit is set
//
//
#define DOCUMENTEVENT_EVENT(iEsc) (LOWORD(iEsc))
#define DOCUMENTEVENT_FLAGS(iEsc) (HIWORD(iEsc))
typedef struct _DOCEVENT_FILTER {
UINT cbSize;
UINT cElementsAllocated;
UINT cElementsNeeded;
UINT cElementsReturned;
DWORD aDocEventCall[ANYSIZE_ARRAY];
} DOCEVENT_FILTER, *PDOCEVENT_FILTER;
//
// Add structures usded for each DocumentEvent calls
//
typedef struct _DOCEVENT_CREATEDCPRE {
PWSTR pszDriver;
PWSTR pszDevice;
PDEVMODEW pdm;
BOOL bIC;
} DOCEVENT_CREATEDCPRE, *PDCEVENT_CREATEDCPRE;
typedef struct _DOCEVENT_ESCAPE {
int iEscape;
int cjInput;
PVOID pvInData;
} DOCEVENT_ESCAPE, *PDOCEVENT_ESCAPE;
//
// Escape codes for DrvDocumentEvent
//
#define DOCUMENTEVENT_FIRST 1 // Inclusive lower bound
#define DOCUMENTEVENT_CREATEDCPRE 1 // in-pszDriver, pszDevice, pdm, bIC, out-ppdm
#define DOCUMENTEVENT_CREATEDCPOST 2 // in-ppdm
#define DOCUMENTEVENT_RESETDCPRE 3 // in-pszDriver, pszDevice, pdm, out-ppdm
#define DOCUMENTEVENT_RESETDCPOST 4 // in-ppdm
#define DOCUMENTEVENT_STARTDOC 5 // none
#define DOCUMENTEVENT_STARTDOCPRE 5 // none
#define DOCUMENTEVENT_STARTPAGE 6 // none
#define DOCUMENTEVENT_ENDPAGE 7 // none
#define DOCUMENTEVENT_ENDDOC 8 // none
#define DOCUMENTEVENT_ENDDOCPRE 8 // none
#define DOCUMENTEVENT_ABORTDOC 9 // none
#define DOCUMENTEVENT_DELETEDC 10 // none
#define DOCUMENTEVENT_ESCAPE 11 // in-iEsc, cjInBuf, inBuf, out-outBuf
#define DOCUMENTEVENT_ENDDOCPOST 12 // none
#define DOCUMENTEVENT_STARTDOCPOST 13 // none
#define DOCUMENTEVENT_QUERYFILTER 14 // none
#define DOCUMENTEVENT_LAST 15 // Non-inclusive upper bound
#define DOCUMENTEVENT_SPOOLED 0x10000
//
// Return values for DrvDocumentEvent
//
#define DOCUMENTEVENT_SUCCESS 1
#define DOCUMENTEVENT_UNSUPPORTED 0
#define DOCUMENTEVENT_FAILURE -1
int WINAPI
DrvDocumentEvent(
HANDLE hPrinter,
HDC hdc,
int iEsc,
ULONG cbIn,
PVOID pvIn,
ULONG cbOut,
PVOID pvOut
);
//
// DrvPrinterEvent
//
//
// DrvPrinterEvent are called by the print subsystem when events
// happen that might be of interest to a printer driver
// The only event which should be implemented in the driver
// is PRITNER_EVENT_INITIALIZE so that default settings are created
// for the printer.
//
// PRINTER_EVENT_CONFIGURATION_CHANGE
// Reserve it for future use.Xerox is already using it.
//
// PRINTER_EVENT_ADD_CONNECTION
// return value ignored
// Called after a successful AddPrinterConnection API
// in the context of the calling app
// lParam NULL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -