⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printresizercommon.h

📁 虚拟打印机
💻 H
字号:
/* * printResizerCommon.h *   Copyright (C) 2006 Michael H. Overlin   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      Contact at poster_printer@yahoo.com */#ifndef PRINTRESIZERCOMMON_H#define PRINTRESIZERCOMMON_H#include <string>#include <windows.h>//#include <winddi.h>//#include <winddiui.h>#define STATICBOOLBREAK						FALSE// DEBUG - FIX THIS SHOULD BE A REG ENTRY DETERMINED ON INSTALL#define PRINTRESIZER_MAX_TARGETPRINTER_DEVMODE_SIZE					4096#define TARGETPRINTERNAME_MAX					MAX_PATH // NEED TO CHECK I DON'T ASSUME MAX_PATH+1 ANYWHERE DEBUG/FIX// 0 = WIN 95/98/ME// 1 = WIN NT 4.0// 2 = WIN 2000/XP#define PRINTRESIZER_ADDPRINTERDRIVER_VERSION	3#define PRINTRESIZER_VERSION_USER_SEES			TEXT("VERSION 1.0 BETA")#define PRINTRESIZER_AUTHOR						TEXT("Michael H. Overlin")#define PRINTRESIZER_CONTACT					TEXT("http://www.geocities.com/poster_printer/")#define PRINTRESIZER_URL						TEXT("http://www.geocities.com/poster_printer/")#define PRINTRESIZER_BUGREPORT					TEXT("http://www.geocities.com/poster_printer/")#define PRINTRESIZER_SOURCE						TEXT("http://www.geocities.com/poster_printer/")#define PRINTRESIZER_OTHERCREDITS				TEXT("\"PrintMirror\" by Vipin Aravind")#define PRINTRESIZER_OSFOR						TEXT("Windows NT 4.0, 2000, 2003, XP")inline BOOL IsWinVersionOK(void) { return (LONG) ::GetVersion() >= 0; }#define PRINTRESIZER_PUBLISHDATE				TEXT("July 15, 2006")// TO GET THE SPOOLER TO UPGRADE THE DRIVER FILES// YOU HAVE TO BUMP AT LEAST THIS VERSION VALUE,// AND BEST TO BUMP THE TIMESTAMP AS WELL#define PRINTRESIZER_VERSION				0x24// INIT FOR A SYSTEMTIME STRUCT// THIS TIME IS "STAMPED" ON ALL FILES INSTALLED// TO THE USERS SYSTEM#define PRINTRESIZER_INSTALLED_TIMESTAMP	{ 2006, 7, 3, 12, 20, 0, 0, 0 }//typedef struct _SYSTEMTIME {//    WORD wYear;//    WORD wMonth;//    WORD wDayOfWeek;//    WORD wDay;//    WORD wHour;//    WORD wMinute;//    WORD wSecond;//    WORD wMilliseconds;//} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;//// AS THE INSTALLER INSTALLS THE DRIVER, PRINT PROCESSOR, ETC// THIS SETS THE MINIMUM AMOUNT EACH INSTALL CAN TAKE, SO THE USER HAS A CHANCE TO SEE// WHAT IS BEING DONE #define INSTALLUINT_MINTIME_MS				500// IF INSTALL IS SUCCESSFUL, WE WAIT THIS LONG BEFORE BRINGING THE PROGRESS DIALOG// TO THE FOREGROUND, SO THAT FOLDERS WE OPENED FOR THE USER HAVE A CHANCE TO FINISH// OPENING (OTHERWISE THEY COVER THEY PROGRESS DIALOG AGAIN)#define SLEEP_TO_LET_FOLDER_WINDOWS_OPEN_MS 1000#define WINVER_MAJOR						HIBYTE(WINVER)#define WINVER_MINOR						LOBYTE(WINVER)#define MAKEBYTE(a,b)						( (BYTE) (((BYTE) ((a)& 0x0f)) | ((BYTE) ((b) & 0x0f) << 4)) )#define WINVER_BYTE							MAKEBYTE(WINVER_MINOR, WINVER_MAJOR)//#define PRINTRESIZER_APPWINDOW_ESCAPE		((ULONG) 0x10000 + 19827)// NOTE MSPLOT USES 0x0500 here (?)#define PRINTRESIZER_GDIINFO_VERSION		MAKELONG( MAKEWORD( PRINTRESIZER_VERSION, WINVER_BYTE ), 0 )								#define MAX_CCH_PRDRIVER_FILENAME				32#define MAX_PRDERIVER_ALTERNATES				10#define PRINTRESIZER_DRIVERNAME					TEXT("posterprinter")#define PRINTRESIZER_GRAPHICSDLL_FILENAME		TEXT("prgraphics.dll")#define PRINTRESIZER_UIDLL_FILENAME				TEXT("prui.dll")#define PRINTRESIZER_PRINTPROCESSOR_FILENAME	TEXT("prprint.dll")#define PRINTRESIZER_PRINTPROCESSOR_NAME		TEXT("prprint")#define PRINTRESIZER_DATAFILE_NAME				TEXT("gnugpl.rtf")//#define PRINTRESIZER_HELPFILE_NAME				TEXT("printResizerUI.hlp")#define PRINTRESIZER_PREIVEAPP_FILENAME			TEXT("prpreview.exe")#define PRINTRESIZER_PORTNAME					TEXT("virtual printer port")#define PRINTRESIZER_PORTMONITORNAME			TEXT("Local Port")  // DIDN'T SEE THIS MAGIC NAME REALLY DOCUMENTED ANYWHERE ... WEB RESEARCH SHOWS IT SEEMS TO BE THE RIGHT "PORT MONITOR" NAME TO USE// DEBUG / FIX LETS USE EMF 1.008 IF ITS AVAILABLE ON WIN 95 ; IF NOT MAYBE WE HAVE TO MOD THE PRPRINT#define PRINTRESIZER_DEFAULT_DATATYPE			TEXT("NT EMF 1.006")   // USED FOR PRINTER_INFO_2 ADDPRINTER#define PRINTRESIZER_DEFAULT_DRIVER_DATATYPE	TEXT("RAW")			// USED FOR DRIVER_INFO_3 ADDDRIVER																	// ON MY SYSTEM "EMF" AND "EMF 1.008" BOTH FAILED, SWITCHING TO "RAW" WORKED#define PRINTRESIZER_DEFAULT_PRINTERNAME		TEXT("Poster Printer")#define PRINTRESIZER_LINK_FOLDER_NAME				PRINTRESIZER_DEFAULT_PRINTERNAME// NAME USED IN INSTALLER/UINSTALLER TO REFER TO THE SOFTWARE PACKAGE#define PRINTRESIZER_PACKAGE_NAME				TEXT("Poster Printer")#define PRINTRESIZER_INSTALLATION_SPOOLERSTOP_WAITTIME	6000//typedef struct _SYSTEMTIME {  WORD wYear;  WORD wMonth;  WORD wDayOfWeek;  WORD wDay;  //WORD wHour;  WORD wMinute;  WORD wSecond;  WORD wMilliseconds;//} SYSTEMTIME, #define	WM_TEMPFILEWRITTEN				(WM_USER + 1)#define	WM_ABORTPRINTING				(WM_USER + 2)//#define PRINTRESIZER_APP_NAME			TEXT("Poster Utility And Preview")#define PRINTRESIZER_APP_NAME			TEXT("Poster Utility")#define PRINTRESIZER_INSTALLER_APP_NAME TEXT("Poster Printer Installer")#define PRINTRESIZER_UNINSTALLER_STUB_APP_NAME TEXT("Poster Printer Uninstaller")// THE UNINSTALLER DLL DOESN'T HAVE A FILE NAME DEFINED BECAUSE IT IS WRITTEN TO A TEMP FILE AND// AUTO-DELETES ITSELF#define PRINTRESIZER_UNINSTALLER_STUB_FILE_NAME TEXT("pruninstallerstub.exe")#define PRINTRESIZER_URL_LINKANME		TEXT("Poster Printer Web Site (latest version, report bugs, request features)")#define PRINTRESIZER_LINKFOLDER_PARENT	CSIDL_COMMON_PROGRAMS#define PRINTRESIZER_ADDPROGS_FOLDER_PARENT CSIDL_PROGRAM_FILES#define PRINTRESIZER_ADDPROGS_FOLDER_NAME	TEXT("Poster Printer")// NOTE:  USER IS WARNED IT MAY TAKE UP TO 10 SECONDS, THIS IS HARD CODED INTO STRINGS#define PRINTRESIZER_SPOOLERRESTART_WAITTIME_MS	10000typedef TCHAR PRDRIVER_FILENAME_BUFF[MAX_CCH_PRDRIVER_FILENAME + 1];typedef PRDRIVER_FILENAME_BUFF PRDRIVER_FILENAME_ALTERNATES[MAX_PRDERIVER_ALTERNATES];// IF WE ARE PRINTING TO OURSELF IN A CIRCULAR REFERENCE// THIS IS THE MINIMUM CUSTOM PAPER SIZE THE USER COULD SET// (NOT FULLY IMPLEMENTED YET - DEBUG / FIX)// FIRST LIMITS ON PRINTABLE AREA#define PRINTRESIZER_FALLBACK_MINUSERPAPERPRINTABLE_DIMENSION	( (double) 1.0 )		// INCHES// MAX#define PRINTRESIZER_FALLBACK_MAXUSERPAPERPRINTABLE_DIMENSION	( (double) 12.0*10 )	// INCHES// SECOND LIMITS ON TOTAL SIZE (SO FOR MINIMUMS THE FIRST REALLY SETS THE LIMIT,// AND FOR MAXIMUMS THESE SET THE LIMIT)#define PRINTRESIZER_FALLBACK_MINUSERPAPER_DIMENSION			( (double) 1.0 )		// INCHES// MAX// NOTE THESE VALUES IN 10ths OF MILLIMETERS GET STORED// INTO A POINTS I.E. SHORTS IN DrvDeviceCapabilities// SO THIS MAY PLACE A LIMIT OF ABOUT 30,000 IN THESE UNITS// 10 FEET IS 3048 millimeters SO THIS IS ABOUT THE BIGGEST// WE CAN ALLOW#define PRINTRESIZER_FALLBACK_MAXUSERPAPER_DIMENSION		( (double) 12.0*10 )	// INCHES#define PRINTRESIZER_FALLBACK_LOGPIXELS_X					300  // CURRENT THINKG - MAKE SAME AS TYPICAL DISPLAY#define PRINTRESIZER_FALLBACK_LOGPIXELS_Y					300#define PRINTRESIZER_FALLBACK_PAGEMARGINS_LEFT				( (double) 0.25 )		// INCHES#define PRINTRESIZER_FALLBACK_PAGEMARGINS_TOP				( (double) 0.25 )		// INCHES#define PRINTRESIZER_FALLBACK_PAGEMARGINS_RIGHT				( (double) 0.25 )		// INCHES#define PRINTRESIZER_FALLBACK_PAGEMARGINS_BOTTOM			( (double) 0.25 )		// INCHES#define PRINTRESIZER_FALLBACK_BITSPIXEL						24#define PRINTRESIZER_FALLBACK_PLANES						1#define PRINTRESIZER_FALLBACK_NUMCOLORS						8#define PRINTRESIZER_FALLBACK_ASPECT_X						10#define PRINTRESIZER_FALLBACK_ASPECT_Y						10#define PRINTRESIZER_FALLBACK_ASPECT_XY						14#define PRINTRESIZER_FALLBACK_MAXSCALE						1000// THE FALLBACK COPIES FIELD IS ONLY USED WHEN WE PRINT TO OURSELF, IN WHICH CASE WE DON'T ACTUALLY POP UP THAT// NUMBER OF PREVIEW DIALOGS, ETC., IT DOESN'T HAVE MUCH EFFECT (IT MIGHT HAVE SOME EFFECT AT SOME POINT IF THE USER// WERE TO SELECT ANOTHER PRINTER IN THE DIALOG)#define PRINTRESIZER_FALLBACK_MAXCOPIES						1typedef int PrintResizerComponent;namespace PrintResizerComponents {	enum {		eGraphicsDLL,		eInstaller,		eUIDLL,		ePreviewApp,		ePrintProcessor,		eUnInstaller	};};typedef int PrintPreviewDataSource;namespace PrintPreviewDataSources {	enum {		eUnspecified,		ePrintSpoolerDataFile,		ePosterDataFile,		eBitmap	};};// MAY NOT DEFINE ANY ... THE OS MAY HAVE ERROR CODES TO // DESCRIBE ALL MY ERROR CONDITIONS (SUCH AS OUT OF MEMORY, ETC.)// NOTE:  ACCORDING TO DOCS, THESE ARE DWORD'S WITH BIT 29 SET TO// MAKE SURE THEY DON'T CONFLICT WITH OS PREDEFINED ERROR CODESnamespace PrintResizerErrorCodes {};#define PRINTRESIZER_MINSCREENRES_CX	800#define PRINTRESIZER_MINSCREENRES_CY	600#define PRINTRESIZER_MINSCREENRES		TEXT("800 x 600")#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -