The following code will work in both PB/DLL and PB/CC:
-------------
PowerBASIC Support
mailto:[email protected][email protected]</A>
Code:
#COMPILE EXE #INCLUDE "WIN32API.INC" #INCLUDE "COMDLG32.INC" FUNCTION PbMain() AS LONG LOCAL pd AS PRINTDLGAPI LOCAL di AS DOCINFO LOCAL dn AS ASCIIZ * 64 LOCAL hWnd AS LONG LOCAL hDC AS LONG LOCAL hBmp AS LONG LOCAL hBmpDC AS LONG LOCAL r AS RECT LOCAL x AS LONG LOCAL y AS LONG pd.lStructSize = SIZEOF(pd) pd.Flags = %PD_NOSELECTION OR %PD_NOPAGENUMS OR %PD_USEDEVMODECOPIES OR %PD_RETURNDC pd.hWndOwner = %HWND_DESKTOP IF ISFALSE PrintDlg(pd) THEN EXIT FUNCTION END IF hWnd = GetDeskTopWindow GetWindowRect hWnd, r hDC = GetDC(hWnd) hBmpDC = CreateCompatibleDC(pd.hDC) hBmp = CreateCompatibleBitmap(pd.hDC, r.nRight, r.nBottom) SelectObject hBmpDC, hBmp BitBlt hBmpDC, 0, 0, r.nRight, r.nBottom, hDC, 0, 0, %SRCCOPY dn = "Printer Test" di.cbSize = SIZEOF(di) di.lpszDocName = VARPTR(dn) IF StartDoc(pd.hDC, di) > 0 THEN IF StartPage(pd.hDC) <= 0 THEN EXIT FUNCTION END IF ' scale the bitmap to the width of the page x = GetDeviceCaps(pd.hDC, %HORZRES) y = CLNG((x / r.nRight) * r.nBottom) SelectObject pd.hDC, hBmp StretchBlt pd.hDC, 0, 0, x, y, hBmpDC, 0, 0, r.nRight, r.nBottom, %SRCCOPY IF EndPage(pd.hDC) <= 0 THEN EXIT FUNCTION END IF EndDoc pd.hDC END IF DeleteDC hDC DeleteDC hBmpDC DeleteDC pd.hDC END FUNCTION
-------------
PowerBASIC Support
mailto:[email protected][email protected]</A>
Comment