📄 printresizercommon.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 + -