Update of /cvsroot/pywin32/pywin32/win32/Demos
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31531/win32/Demos
Modified Files:
print_desktop.py
Log Message:
Remove hardcoded print processor name and add an extra CreateCompatibleDC so demo works with more types of printers, use API functions instead of MFC object methods
Index: print_desktop.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/win32/Demos/print_desktop.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** print_desktop.py 12 Sep 2004 23:02:32 -0000 1.1
--- print_desktop.py 18 May 2005 16:41:52 -0000 1.2
***************
*** 1,3 ****
! import win32print, pywintypes, win32con, win32ui, win32gui
pname=win32print.GetDefaultPrinter()
--- 1,3 ----
! import win32print, pywintypes, win32con, win32gui, win32ui
pname=win32print.GetDefaultPrinter()
***************
*** 5,9 ****
p=win32print.OpenPrinter(pname)
print 'Printer handle: ',p
!
## call with last parm set to 0 to get total size needed for printer's DEVMODE
dmsize=win32print.DocumentProperties(0, p, pname, None, None, 0)
--- 5,9 ----
p=win32print.OpenPrinter(pname)
print 'Printer handle: ',p
! print_processor=win32print.GetPrinter(p,2)['pPrintProcessor']
## call with last parm set to 0 to get total size needed for printer's DEVMODE
dmsize=win32print.DocumentProperties(0, p, pname, None, None, 0)
***************
*** 16,39 ****
win32print.DocumentProperties(0, p, pname, dm, dm, win32con.DM_IN_BUFFER|win32con.DM_OUT_BUFFER)
! pDC=win32gui.CreateDC('WINSPOOL',pname,dm)
! printerDC=win32ui.CreateDCFromHandle(pDC)
!
! printerwidth=printerDC.GetDeviceCaps(110) ##PHYSICALWIDTH
! printerheight=printerDC.GetDeviceCaps(111) ##PHYSICALHEIGHT
hwnd=win32gui.GetDesktopWindow()
- ## hwnd=win32gui.GetForegroundWindow()
l,t,r,b=win32gui.GetWindowRect(hwnd)
desktopheight=b-t
desktopwidth=r-l
dDC = win32gui.GetWindowDC(hwnd)
- desktopDC=win32ui.CreateDCFromHandle(dDC)
! printerDC.StartDoc('desktop.bmp')
! printerDC.StartPage()
! printerDC.StretchBlt((0,0),(int(printerwidth*.9),int(printerheight*.9)), ## allow for paper margin
! desktopDC,(0,0),(desktopwidth,desktopheight),win32con.SRCCOPY)
! printerDC.EndPage()
! printerDC.EndDoc()
--- 16,51 ----
win32print.DocumentProperties(0, p, pname, dm, dm, win32con.DM_IN_BUFFER|win32con.DM_OUT_BUFFER)
! pDC=win32gui.CreateDC(print_processor,pname,dm)
! printerwidth=win32ui.GetDeviceCaps(pDC, 110) ##PHYSICALWIDTH
! printerheight=win32ui.GetDeviceCaps(pDC, 111) ##PHYSICALHEIGHT
hwnd=win32gui.GetDesktopWindow()
l,t,r,b=win32gui.GetWindowRect(hwnd)
desktopheight=b-t
desktopwidth=r-l
dDC = win32gui.GetWindowDC(hwnd)
! dcDC=win32gui.CreateCompatibleDC(dDC)
! dcBM = win32gui.CreateCompatibleBitmap(dDC, desktopwidth, desktopheight);
! win32gui.SelectObject(dcDC, dcBM)
! win32gui.StretchBlt(dcDC, 0, 0, desktopwidth, desktopheight, dDC, 0, 0, desktopwidth, desktopheight, win32con.SRCCOPY)
!
! pcDC=win32gui.CreateCompatibleDC(pDC)
! pcBM=win32gui.CreateCompatibleBitmap(pDC, printerwidth, printerheight)
! win32gui.SelectObject(pcDC, pcBM)
! win32gui.StretchBlt(pcDC, 0, 0, printerwidth, printerheight, dcDC, 0, 0, desktopwidth, desktopheight, win32con.SRCCOPY)
!
! win32print.StartDoc(pDC,('desktop.bmp',None,None,0))
! win32print.StartPage(pDC)
! win32gui.StretchBlt(pDC, 0, 0, int(printerwidth*.9), int(printerheight*.9), pcDC, 0, 0, printerwidth, printerheight, win32con.SRCCOPY)
!
! win32print.EndPage(pDC)
! win32print.EndDoc(pDC)
!
! win32print.ClosePrinter(p)
! win32gui.DeleteDC(dDC)
! win32gui.DeleteDC(dcDC)
! win32gui.DeleteDC(pDC)
! win32gui.DeleteDC(pcDC)
|