home *** CD-ROM | disk | FTP | other *** search
/ Dan Appleman's Visual Bas…s Guide to the Win32 API / Dan.Applmans.Visual.Basic.5.0.Programmers.Guide.To.The.Win32.API.1997.Ziff-Davis.Press.CD / VB5PG32.mdf / vbpg32 / samples5 / ch12 / picprint.bas < prev    next >
Encoding:
BASIC Source File  |  1997-02-16  |  12.9 KB  |  340 lines

  1. Attribute VB_Name = "PICPRINT1"
  2. Option Explicit
  3. ' Copyright ⌐ 1997 by Desaware Inc. All Rights Reserved.
  4.  
  5. ' Public constants
  6.  
  7. Public Const SRCCOPY = &HCC0020
  8. Public Const SRCPAINT = &HEE0086
  9. Public Const SRCAND = &H8800C6
  10. Public Const SRCINVERT = &H660046
  11. Public Const SRCERASE = &H440328
  12. Public Const NOTSRCCOPY = &H330008
  13. Public Const NOTSRCERASE = &H1100A6
  14. Public Const MERGECOPY = &HC000CA
  15. Public Const MERGEPAINT = &HBB0226
  16. Public Const PATCOPY = &HF00021
  17. Public Const PATPAINT = &HFB0A09
  18. Public Const PATINVERT = &H5A0049
  19. Public Const DSTINVERT = &H550009
  20. Public Const BLACKNESS = &H42&
  21. Public Const WHITENESS = &HFF0062
  22. Public Const BLACKONWHITE = 1
  23. Public Const WHITEONBLACK = 2
  24. Public Const COLORONCOLOR = 3
  25. Public Const DM_ORIENTATION = &H1&
  26. Public Const DM_PAPERSIZE = &H2&
  27. Public Const DM_PAPERLENGTH = &H4&
  28. Public Const DM_PAPERWIDTH = &H8&
  29. Public Const DM_SCALE = &H10&
  30. Public Const DM_COPIES = &H100&
  31. Public Const DM_DEFAULTSOURCE = &H200&
  32. Public Const DM_PRINTQUALITY = &H400&
  33. Public Const DM_COLOR = &H800&
  34. Public Const DM_DUPLEX = &H1000&
  35. Public Const DM_YRESOLUTION = &H2000&
  36. Public Const DM_TTOPTION = &H4000&
  37. Public Const DMORIENT_PORTRAIT = 1
  38. Public Const DMORIENT_LANDSCAPE = 2
  39. Public Const DMPAPER_LETTER = 1
  40. Public Const DMPAPER_LETTERSMALL = 2
  41. Public Const DMPAPER_TABLOID = 3
  42. Public Const DMPAPER_LEDGER = 4
  43. Public Const DMPAPER_LEGAL = 5
  44. Public Const DMPAPER_STATEMENT = 6
  45. Public Const DMPAPER_EXECUTIVE = 7
  46. Public Const DMPAPER_A3 = 8
  47. Public Const DMPAPER_A4 = 9
  48. Public Const DMPAPER_A4SMALL = 10
  49. Public Const DMPAPER_A5 = 11
  50. Public Const DMPAPER_B4 = 12
  51. Public Const DMPAPER_B5 = 13
  52. Public Const DMPAPER_FOLIO = 14
  53. Public Const DMPAPER_QUARTO = 15
  54. Public Const DMPAPER_10X14 = 16
  55. Public Const DMPAPER_11X17 = 17
  56. Public Const DMPAPER_NOTE = 18
  57. Public Const DMPAPER_ENV_9 = 19
  58. Public Const DMPAPER_ENV_10 = 20
  59. Public Const DMPAPER_ENV_11 = 21
  60. Public Const DMPAPER_ENV_12 = 22
  61. Public Const DMPAPER_ENV_14 = 23
  62. Public Const DMPAPER_CSHEET = 24
  63. Public Const DMPAPER_DSHEET = 25
  64. Public Const DMPAPER_ESHEET = 26
  65. Public Const DMPAPER_ENV_DL = 27
  66. Public Const DMPAPER_ENV_C5 = 28
  67. Public Const DMPAPER_ENV_C3 = 29
  68. Public Const DMPAPER_ENV_C4 = 30
  69. Public Const DMPAPER_ENV_C6 = 31
  70. Public Const DMPAPER_ENV_C65 = 32
  71. Public Const DMPAPER_ENV_B4 = 33
  72. Public Const DMPAPER_ENV_B5 = 34
  73. Public Const DMPAPER_ENV_B6 = 35
  74. Public Const DMPAPER_ENV_ITALY = 36
  75. Public Const DMPAPER_ENV_MONARCH = 37
  76. Public Const DMPAPER_ENV_PERSONAL = 38
  77. Public Const DMPAPER_FANFOLD_US = 39
  78. Public Const DMPAPER_FANFOLD_STD_GERMAN = 40
  79. Public Const DMPAPER_FANFOLD_LGL_GERMAN = 41
  80. Public Const DMPAPER_USER = 256
  81. Public Const DMBIN_UPPER = 1
  82. Public Const DMBIN_ONLYONE = 1
  83. Public Const DMBIN_LOWER = 2
  84. Public Const DMBIN_MIDDLE = 3
  85. Public Const DMBIN_MANUAL = 4
  86. Public Const DMBIN_ENVELOPE = 5
  87. Public Const DMBIN_ENVMANUAL = 6
  88. Public Const DMBIN_AUTO = 7
  89. Public Const DMBIN_TRACTOR = 8
  90. Public Const DMBIN_SMALLFMT = 9
  91. Public Const DMBIN_LARGEFMT = 10
  92. Public Const DMBIN_LARGECAPACITY = 11
  93. Public Const DMBIN_CASSETTE = 14
  94. Public Const DMBIN_USER = 256
  95. Public Const DMRES_DRAFT = -1
  96. Public Const DMRES_LOW = -2
  97. Public Const DMRES_MEDIUM = -3
  98. Public Const DMRES_HIGH = -4
  99. Public Const DMCOLOR_MONOCHROME = 1
  100. Public Const DMCOLOR_COLOR = 2
  101. Public Const DMDUP_SIMPLEX = 1
  102. Public Const DMDUP_VERTICAL = 2
  103. Public Const DMDUP_HORIZONTAL = 3
  104. Public Const DMTT_BITMAP = 1
  105. Public Const DMTT_DOWNLOAD = 2
  106. Public Const DMTT_SUBDEV = 3
  107. Public Const DM_UPDATE = 1
  108. Public Const DM_COPY = 2
  109. Public Const DM_PROMPT = 4
  110. Public Const DM_MODIFY = 8
  111. Public Const DM_IN_BUFFER = 8
  112. Public Const DM_IN_PROMPT = 4
  113. Public Const DM_OUT_BUFFER = 2
  114. Public Const DM_OUT_DEFAULT = 1
  115. Public Const DC_FIELDS = 1
  116. Public Const DC_PAPERS = 2
  117. Public Const DC_PAPERSIZE = 3
  118. Public Const DC_MINEXTENT = 4
  119. Public Const DC_MAXEXTENT = 5
  120. Public Const DC_BINS = 6
  121. Public Const DC_DUPLEX = 7
  122. Public Const DC_SIZE = 8
  123. Public Const DC_EXTRA = 9
  124. Public Const DC_VERSION = 10
  125. Public Const DC_DRIVER = 11
  126. Public Const DC_BINNAMES = 12
  127. Public Const DC_ENUMRESOLUTIONS = 13
  128. Public Const DC_FILEDEPENDENCIES = 14
  129. Public Const DC_TRUETYPE = 15
  130. Public Const DC_PAPERNAMES = 16
  131. Public Const DC_ORIENTATION = 17
  132. Public Const DC_COPIES = 18
  133. Public Const DCTT_BITMAP = &H1&
  134. Public Const DCTT_DOWNLOAD = &H2&
  135. Public Const DCTT_SUBDEV = &H4&
  136. Public Const SP_NOTREPORTED = &H4000
  137. Public Const SP_ERROR = (-1)
  138. Public Const SP_APPABORT = (-2)
  139. Public Const SP_USERABORT = (-3)
  140. Public Const SP_OUTOFDISK = (-4)
  141. Public Const SP_OUTOFMEMORY = (-5)
  142. Public Const PR_JOBSTATUS = &H0
  143. Public Const DRIVERVERSION = 0
  144. Public Const TECHNOLOGY = 2
  145. Public Const HORZSIZE = 4
  146. Public Const VERTSIZE = 6
  147. Public Const HORZRES = 8
  148. Public Const VERTRES = 10
  149. Public Const BITSPIXEL = 12
  150. Public Const PLANES = 14
  151. Public Const NUMBRUSHES = 16
  152. Public Const NUMPENS = 18
  153. Public Const NUMMARKERS = 20
  154. Public Const NUMFONTS = 22
  155. Public Const NUMCOLORS = 24
  156. Public Const PDEVICESIZE = 26
  157. Public Const CURVECAPS = 28
  158. Public Const LINECAPS = 30
  159. Public Const POLYGONALCAPS = 32
  160. Public Const TEXTCAPS = 34
  161. Public Const CLIPCAPS = 36
  162. Public Const RASTERCAPS = 38
  163. Public Const ASPECTX = 40
  164. Public Const ASPECTY = 42
  165. Public Const ASPECTXY = 44
  166. Public Const LOGPIXELSX = 88
  167. Public Const LOGPIXELSY = 90
  168. Public Const SIZEPALETTE = 104
  169. Public Const NUMRESERVED = 106
  170. Public Const COLORRES = 108
  171. Public Const RC_BITBLT = 1
  172. Public Const RC_BANDING = 2
  173. Public Const RC_SCALING = 4
  174. Public Const RC_BITMAP64 = 8
  175. Public Const RC_GDI20_OUTPUT = &H10
  176. Public Const RC_DI_BITMAP = &H80
  177. Public Const RC_PALETTE = &H100
  178. Public Const RC_DIBTODEV = &H200
  179. Public Const RC_BIGFONT = &H400
  180. Public Const RC_STRETCHBLT = &H800
  181. Public Const RC_FLOODFILL = &H1000
  182. Public Const RC_STRETCHDIB = &H2000
  183. Public Const GMEM_FIXED = &H0
  184. Public Const GMEM_MOVEABLE = &H2
  185. Public Const GMEM_NOCOMPACT = &H10
  186. Public Const GMEM_NODISCARD = &H20
  187. Public Const GMEM_ZEROINIT = &H40
  188. Public Const GMEM_MODIFY = &H80
  189. Public Const GMEM_DISCARDABLE = &H100
  190. Public Const GMEM_NOT_BANKED = &H1000
  191. Public Const GMEM_SHARE = &H2000
  192. Public Const GMEM_DDESHARE = &H2000
  193. Public Const GMEM_NOTIFY = &H4000
  194. Public Const GMEM_LOWER = GMEM_NOT_BANKED
  195. Public Const DIB_RGB_COLORS = 0
  196. Public Const DIB_PAL_COLORS = 1
  197.  
  198. ' Public variables
  199. Public AbortPrinting%
  200. Public UseHourglass%
  201.  
  202. '  size of a device name string
  203. Public Const CCHDEVICENAME = 32
  204.  
  205. '  size of a form name string
  206. Public Const CCHFORMNAME = 32
  207.  
  208. Public Const BI_RGB = 0&
  209.  
  210. Type POINTAPI
  211.         x As Long
  212.         y As Long
  213. End Type
  214.  
  215. Type DEVMODE
  216.         dmDeviceName As String * CCHDEVICENAME
  217.         dmSpecVersion As Integer
  218.         dmDriverVersion As Integer
  219.         dmSize As Integer
  220.         dmDriverExtra As Integer
  221.         dmFields As Long
  222.         dmOrientation As Integer
  223.         dmPaperSize As Integer
  224.         dmPaperLength As Integer
  225.         dmPaperWidth As Integer
  226.         dmScale As Integer
  227.         dmCopies As Integer
  228.         dmDefaultSource As Integer
  229.         dmPrintQuality As Integer
  230.         dmColor As Integer
  231.         dmDuplex As Integer
  232.         dmYResolution As Integer
  233.         dmTTOption As Integer
  234.         dmCollate As Integer
  235.         dmFormName As String * CCHFORMNAME
  236.         dmUnusedPadding As Integer
  237.         dmBitsPerPel As Integer
  238.         dmPelsWidth As Long
  239.         dmPelsHeight As Long
  240.         dmDisplayFlags As Long
  241.         dmDisplayFrequency As Long
  242. End Type
  243.  
  244. Type PRINTER_DEFAULTS
  245.         pDatatype As String
  246.         pDevMode As Long
  247.         DesiredAccess As Long
  248. End Type
  249.  
  250. Type DOCINFO
  251.         cbSize As Long
  252.         lpszDocName As String
  253.         lpszOutput As String
  254. End Type
  255.  
  256. Type BITMAPINFOHEADER '40 bytes
  257.         biSize As Long
  258.         biWidth As Long
  259.         biHeight As Long
  260.         biPlanes As Integer
  261.         biBitCount As Integer
  262.         biCompression As Long
  263.         biSizeImage As Long
  264.         biXPelsPerMeter As Long
  265.         biYPelsPerMeter As Long
  266.         biClrUsed As Long
  267.         biClrImportant As Long
  268. End Type
  269.  
  270. Type RGBQUAD
  271.         rgbBlue As Byte
  272.         rgbGreen As Byte
  273.         rgbRed As Byte
  274.         rgbReserved As Byte
  275. End Type
  276.  
  277. ' BITMAPINFO for this example is for 16 color bitmap
  278. Type BITMAPINFO
  279.         bmiHeader As BITMAPINFOHEADER
  280.         bmiColors(256) As RGBQUAD
  281. End Type
  282.  
  283. Type BITMAP
  284.         bmType As Long
  285.         bmWidth As Long
  286.         bmHeight As Long
  287.         bmWidthBytes As Long
  288.         bmPlanes As Integer
  289.         bmBitsPixel As Integer
  290.         bmBits As Long
  291. End Type
  292.  
  293. Public Const PRINTER_ACCESS_ADMINISTER = &H4
  294. Public Const PRINTER_ACCESS_USE = &H8
  295.  
  296. Public Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
  297. Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
  298. Declare Function OpenPrinterBynum Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
  299. Declare Function ResetPrinter Lib "winspool.drv" Alias "ResetPrinterA" (ByVal hPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
  300. Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
  301. Declare Function PrinterProperties Lib "winspool.drv" (ByVal hwnd As Long, ByVal hPrinter As Long) As Long
  302. Declare Function DocumentProperties Lib "winspool.drv" Alias "DocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, ByVal pDevModeOutput As Long, ByVal pDevModeInput As Long, ByVal fMode As Long) As Long
  303. Declare Function AdvancedDocumentProperties Lib "winspool.drv" Alias "AdvancedDocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, pDevModeOutput As DEVMODE, ByVal pDevModeInput As Long) As Long
  304. Declare Function ConnectToPrinterDlg Lib "winspool.drv" (ByVal hwnd As Long, ByVal flags As Long) As Long
  305. Declare Function ConfigurePort Lib "winspool.drv" Alias "ConfigurePortA" (ByVal pName As String, ByVal hwnd As Long, ByVal pPortName As String) As Long
  306. Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, ByVal lpOutput As String, ByVal lpDevMode As Long) As Long
  307. Declare Function CreateDCBynum Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As Long) As Long
  308. Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
  309. Declare Function StartDoc Lib "gdi32" Alias "StartDocA" (ByVal hdc As Long, lpdi As DOCINFO) As Long
  310. Declare Function StartPage Lib "gdi32" (ByVal hdc As Long) As Long
  311. Declare Function EndPage Lib "gdi32" (ByVal hdc As Long) As Long
  312. Declare Function EndDocAPI Lib "gdi32" Alias "EndDoc" (ByVal hdc As Long) As Long
  313. Declare Function AbortDoc Lib "gdi32" (ByVal hdc As Long) As Long
  314. Declare Function SetAbortProc Lib "gdi32" (ByVal hdc As Long, ByVal lpAbortProc As Long) As Long
  315. Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
  316. Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
  317. Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
  318. Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
  319. Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
  320. Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
  321. Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  322. Declare Function SetDIBitsToDevice Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
  323. Declare Function StretchDIBits Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long) As Long
  324. Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
  325. Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
  326.  
  327.  
  328. Public Function Callback1_AbortProc(ByVal hPr As Long, ByVal code As Long) As Long
  329.     ' We must allow events to take place, otherwise the
  330.     ' user button press on the abortform form will never
  331.     ' be detected!
  332.     DoEvents
  333.     If code = SP_OUTOFDISK Or AbortPrinting% Then
  334.         Callback1_AbortProc = 0
  335.         Exit Function
  336.     End If
  337.     Callback1_AbortProc = -1
  338. End Function
  339.  
  340.