diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 0425d3959c..b08dfc7cfc 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,33 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-11-21 22:37 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbwin/win_tprn.prg + * contrib/hbwin/win_prn1.c + + Added ::GetDocumentProperties() method. + + Calling ::GetDocumentProperties() from ::New() to setup defaults. + ; Patch submitted by Xavi. Thank you. + + * contrib/hbwin/win_prn2.c + % Modified GETPRINTERS() code to use optimal array creation code, + use less redundancy and synced functionally similar code + parts with each other, deleted unnecessary code parts. + * Greatly cleaned GETPRINTERS() code (names, layout). + ! Fixed GETPRINTERS() code. It had fatal flaw in non-NT + branch, so I seriously wonder how could it work for anyone + in the past. It seems it wasn't even tested by submitter + before commited to xhb repository in year 2005. + Someone pls test it on Win9x, I don't have any printers + installed there. + + * contrib/hbwin/win_prn1.c + * contrib/hbwin/legacy.prg + * Moved WIN_GETEXEFILENAME() to legacy function collection, + at the same time rewritten to simply call HB_ARGV( 0 ). + + * contrib/hbwin/win_prn1.c + % WIN_FILLRECT(), WIN_ARC(), WIN_ELLIPSE() optimized. + 2009-11-21 20:28 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * config/darwin/gcc.mk * config/darwin/icc.mk diff --git a/harbour/contrib/hbwin/legacy.prg b/harbour/contrib/hbwin/legacy.prg index 0fb772bd0c..3873bf9855 100644 --- a/harbour/contrib/hbwin/legacy.prg +++ b/harbour/contrib/hbwin/legacy.prg @@ -342,6 +342,9 @@ METHOD OleValueNotEqual( xArg ) CLASS TOLEAUTO FUNCTION CreateOLEObject( ... ) RETURN __OleCreateObject( ... ) +FUNCTION win_GetExeFileName() + RETURN hb_ArgV( 0 ) + CREATE CLASS Win32Prn FROM WIN_PRN ENDCLASS diff --git a/harbour/contrib/hbwin/win_prn1.c b/harbour/contrib/hbwin/win_prn1.c index 4a4e2d9997..e19861d70e 100644 --- a/harbour/contrib/hbwin/win_prn1.c +++ b/harbour/contrib/hbwin/win_prn1.c @@ -470,6 +470,47 @@ HB_FUNC( WIN_SETDOCUMENTPROPERTIES ) hb_retl( Result ); } +HB_FUNC( WIN_GETDOCUMENTPROPERTIES ) +{ + BOOL Result = FALSE; + HANDLE hPrinter; + const char * pszPrinterName = hb_parc( 1 ); + LPTSTR lpPrinterName = pszPrinterName ? HB_TCHAR_CONVTO( pszPrinterName ) : NULL; + + if( OpenPrinter( lpPrinterName, &hPrinter, NULL ) ) + { + PDEVMODE pDevMode = NULL; + LONG lSize = DocumentProperties( 0, hPrinter, lpPrinterName, pDevMode, pDevMode, 0 ); + + if( lSize > 0 ) + { + pDevMode = ( PDEVMODE ) hb_xgrab( lSize ); + + if( pDevMode ) + { + DocumentProperties( 0, hPrinter, lpPrinterName, pDevMode, pDevMode, DM_OUT_BUFFER ); + + hb_stornl( pDevMode->dmPaperSize, 2 ); + hb_storl( pDevMode->dmOrientation == 2, 3 ); + hb_stornl( pDevMode->dmCopies, 4 ); + hb_stornl( pDevMode->dmDefaultSource, 5 ); + hb_stornl( pDevMode->dmDuplex, 6 ); + hb_stornl( pDevMode->dmPrintQuality, 7 ); + Result = TRUE; + + hb_xfree( pDevMode ); + } + } + + ClosePrinter( hPrinter ); + } + + if( lpPrinterName ) + HB_TCHAR_FREE( lpPrinterName ); + + hb_retl( Result ); +} + /* Functions for Loading & Printing bitmaps */ HB_FUNC( WIN_LOADBITMAPFILE ) @@ -582,15 +623,6 @@ HB_FUNC( WIN_ENUMFONTS ) } } -HB_FUNC( WIN_GETEXEFILENAME ) -{ - unsigned char pBuf[ 1024 ]; - - GetModuleFileName( NULL, ( LPTSTR ) pBuf, 1023 ); - - hb_retc( ( char * ) pBuf ); -} - HB_FUNC( WIN_SETCOLOR ) { HDC hDC = win_HDC_par( 1 ); @@ -627,17 +659,13 @@ HB_FUNC( WIN_SETPEN ) HB_FUNC( WIN_FILLRECT ) { HDC hDC = win_HDC_par( 1 ); - int x1 = hb_parni( 2 ); - int y1 = hb_parni( 3 ); - int x2 = hb_parni( 4 ); - int y2 = hb_parni( 5 ); HBRUSH hBrush = CreateSolidBrush( ( COLORREF ) hb_parnl( 6 ) ); RECT rct; - rct.top = y1; - rct.left = x1; - rct.bottom = y2; - rct.right = x2; + rct.left = hb_parni( 2 ); + rct.top = hb_parni( 3 ); + rct.right = hb_parni( 4 ); + rct.bottom = hb_parni( 5 ); FillRect( hDC, &rct, hBrush ); @@ -675,24 +703,24 @@ HB_FUNC( WIN_RECTANGLE ) HB_FUNC( WIN_ARC ) { - HDC hDC = win_HDC_par( 1 ); - int x1 = hb_parni( 2 ); - int y1 = hb_parni( 3 ); - int x2 = hb_parni( 4 ); - int y2 = hb_parni( 5 ); - - hb_retl( Arc( hDC, x1, y1, x2, y2, 0, 0, 0, 0 ) ); + hb_retl( Arc( win_HDC_par( 1 ) /* hDC */, + hb_parni( 2 ) /* x1 */, + hb_parni( 3 ) /* y1 */, + hb_parni( 4 ) /* x2 */, + hb_parni( 5 ) /* y2 */, + 0, + 0, + 0, + 0 ) ); } HB_FUNC( WIN_ELLIPSE ) { - HDC hDC = win_HDC_par( 1 ); - int x1 = hb_parni( 2 ); - int y1 = hb_parni( 3 ); - int x2 = hb_parni( 4 ); - int y2 = hb_parni( 5 ); - - hb_retl( Ellipse( hDC, x1, y1, x2, y2 ) ); + hb_retl( Ellipse( win_HDC_par( 1 ) /* hDC */, + hb_parni( 2 ) /* x1 */, + hb_parni( 3 ) /* y1 */, + hb_parni( 4 ) /* x2 */, + hb_parni( 5 ) /* y2 */ ) ); } HB_FUNC( WIN_SETBKMODE ) diff --git a/harbour/contrib/hbwin/win_prn2.c b/harbour/contrib/hbwin/win_prn2.c index 128ab52d4b..2484a1fda8 100644 --- a/harbour/contrib/hbwin/win_prn2.c +++ b/harbour/contrib/hbwin/win_prn2.c @@ -104,12 +104,11 @@ BOOL hb_PrinterExists( LPCSTR pPrinterName ) pPrinterEnum4 = buffer4 = ( PRINTER_INFO_4 * ) hb_xgrab( needed ); - if( EnumPrinters - ( Flags, NULL, 4, ( LPBYTE ) pPrinterEnum4, needed, &needed, &returned ) ) + if( EnumPrinters( Flags, NULL, 4, ( LPBYTE ) pPrinterEnum4, needed, &needed, &returned ) ) { ULONG a; - for( a = 0; !Result && a < returned; a++, pPrinterEnum4++ ) + for( a = 0; ! Result && a < returned; ++a, pPrinterEnum4++ ) { Result = strcmp( ( const char * ) pPrinterName, ( const char * ) pPrinterEnum4->pPrinterName ) == 0; @@ -358,11 +357,12 @@ HB_FUNC( XISPRINTER ) DWORD pdwBufferSize = sizeof( szDefaultPrinter ); const char * pszPrinterName = hb_parc( 1 ); - if( !pszPrinterName ) + if( ! pszPrinterName ) { hb_GetDefaultPrinter( szDefaultPrinter, &pdwBufferSize ); pszPrinterName = szDefaultPrinter; } + hb_retnl( hb_printerIsReadyn( pszPrinterName ) ); } @@ -386,7 +386,7 @@ BOOL hb_GetPrinterNameByPort( char * pPrinterName, LPDWORD pdwBufferSize, { ULONG a; - for( a = 0; a < returned && !bFound; a++, pPrinterEnum++ ) + for( a = 0; a < returned && ! bFound; ++a, ++pPrinterEnum ) { char * szPortName = HB_TCHAR_CONVFROM( pPrinterEnum->pPortName ); @@ -430,10 +430,10 @@ HB_FUNC( PRINTERPORTTONAME ) # define BIG_PRINT_BUFFER (1024*32) -LONG hb_PrintFileRaw( const char * cPrinterName, const char * cFileName, const char * cDocName ) +long hb_PrintFileRaw( const char * cPrinterName, const char * cFileName, const char * cDocName ) { HANDLE hPrinter; - LONG Result; + long Result; LPTSTR lpPrinterName = HB_TCHAR_CONVTO( cPrinterName ); if( OpenPrinter( lpPrinterName, &hPrinter, NULL ) != 0 ) @@ -493,7 +493,7 @@ LONG hb_PrintFileRaw( const char * cPrinterName, const char * cFileName, const c HB_FUNC( PRINTFILERAW ) { - LONG Result = -1; + long Result = -1; if( HB_ISCHAR( 1 ) && HB_ISCHAR( 2 ) ) Result = hb_PrintFileRaw( hb_parc( 1 ) /* cPrinterName */, @@ -503,111 +503,90 @@ HB_FUNC( PRINTFILERAW ) hb_retnl( Result ); } +#define HB_WINPRN_NAME 1 +#define HB_WINPRN_PORT 2 +#define HB_WINPRN_TYPE 3 +#define HB_WINPRN_DRIVER 4 +#define HB_WINPRN_LEN_ 4 + HB_FUNC( GETPRINTERS ) { HANDLE hPrinter; DWORD Flags = PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS; - BOOL bPrinterNamesOnly = TRUE; - BOOL bLocalPrintersOnly; - PRINTER_INFO_4 * buffer4, * pPrinterEnum4; - PRINTER_INFO_5 * buffer, * pPrinterEnum; - PRINTER_INFO_2 * pPrinterInfo2; + BOOL bPrinterNamesOnly = HB_ISLOG( 1 ) ? ! hb_parl( 1 ) : TRUE; + BOOL bLocalPrintersOnly = hb_parl( 2 ); ULONG needed = 0, returned = 0, a; - PHB_ITEM SubItems, File, Port, Net, Driver, ArrayPrinter; + PHB_ITEM SubItems = hb_itemNew( NULL ); + PHB_ITEM pPrinterName = hb_itemNew( NULL ); + PHB_ITEM ArrayPrinter = hb_itemNew( NULL ); char * pszData; - ArrayPrinter = hb_itemNew( NULL ); - SubItems = hb_itemNew( NULL ); - File = hb_itemNew( NULL ); - Port = hb_itemNew( NULL ); - Net = hb_itemNew( NULL ); - Driver = hb_itemNew( NULL ); - hb_arrayNew( ArrayPrinter, 0 ); - buffer = NULL; - HB_TRACE( HB_TR_DEBUG, ( "GETPRINTERS()" ) ); + EnumPrinters( Flags, NULL, 4, ( LPBYTE ) NULL, 0, &needed, &returned ); - if( HB_ISLOG( 1 ) ) - bPrinterNamesOnly = ! hb_parl( 1 ); - - bLocalPrintersOnly = hb_parl( 2 ); - - if( hb_iswinnt() ) + if( needed ) { - EnumPrinters( Flags, NULL, 4, ( LPBYTE ) NULL, 0, &needed, &returned ); - - if( needed ) + if( hb_iswinnt() ) { - pPrinterEnum4 = buffer4 = ( PRINTER_INFO_4 * ) hb_xgrab( needed ); + PRINTER_INFO_4 * pPrinterEnumBak; + PRINTER_INFO_4 * pPrinterEnum = pPrinterEnumBak = ( PRINTER_INFO_4 * ) hb_xgrab( needed ); - if( EnumPrinters - ( Flags, NULL, 4, ( LPBYTE ) pPrinterEnum4, needed, &needed, &returned ) ) + if( EnumPrinters( Flags, NULL, 4, ( LPBYTE ) pPrinterEnum, needed, &needed, &returned ) ) { - if( bPrinterNamesOnly ) + for( a = 0; a < returned; ++a, ++pPrinterEnum ) { - for( a = 0; a < returned; a++, pPrinterEnum4++ ) + if( ! bLocalPrintersOnly || pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL ) { - if( ! bLocalPrintersOnly - || pPrinterEnum4->Attributes & PRINTER_ATTRIBUTE_LOCAL ) + if( bPrinterNamesOnly ) { - pszData = HB_TCHAR_CONVFROM( pPrinterEnum4->pPrinterName ); - hb_itemPutC( File, pszData ); + pszData = HB_TCHAR_CONVFROM( pPrinterEnum->pPrinterName ); + hb_itemPutC( pPrinterName, pszData ); HB_TCHAR_FREE( pszData ); - hb_arrayAddForward( ArrayPrinter, File ); + hb_arrayAddForward( ArrayPrinter, pPrinterName ); } - } - } - else - { - for( a = 0; a < returned; a++, pPrinterEnum4++ ) - { - if( ! bLocalPrintersOnly - || pPrinterEnum4->Attributes & PRINTER_ATTRIBUTE_LOCAL ) + else { - if( OpenPrinter( pPrinterEnum4->pPrinterName, &hPrinter, NULL ) ) + if( OpenPrinter( pPrinterEnum->pPrinterName, &hPrinter, NULL ) ) { GetPrinter( hPrinter, 2, NULL, 0, &needed ); if( needed ) { - pPrinterInfo2 = ( PRINTER_INFO_2 * ) hb_xgrab( needed ); - if( pPrinterInfo2 ) + hb_arrayNew( SubItems, HB_WINPRN_LEN_ ); + + pszData = HB_TCHAR_CONVFROM( pPrinterEnum->pPrinterName ); + hb_arraySetC( SubItems, HB_WINPRN_NAME, pszData ); + HB_TCHAR_FREE( pszData ); + { - pszData = HB_TCHAR_CONVFROM( pPrinterEnum4->pPrinterName ); - hb_itemPutC( File, pszData ); - HB_TCHAR_FREE( pszData ); - - hb_arrayNew( SubItems, 0 ); + PRINTER_INFO_2 * pPrinterInfo2 = ( PRINTER_INFO_2 * ) hb_xgrab( needed ); if( GetPrinter( hPrinter, 2, ( LPBYTE ) pPrinterInfo2, needed, &needed ) ) { pszData = HB_TCHAR_CONVFROM( pPrinterInfo2->pPortName ); - hb_itemPutC( Port, pszData ); + hb_arraySetC( SubItems, HB_WINPRN_PORT, pszData ); HB_TCHAR_FREE( pszData ); pszData = HB_TCHAR_CONVFROM( pPrinterInfo2->pDriverName ); - hb_itemPutC( Driver, pszData ); + hb_arraySetC( SubItems, HB_WINPRN_DRIVER, pszData ); HB_TCHAR_FREE( pszData ); } else { - hb_itemPutC( Port, "Error" ); - hb_itemPutC( Driver, "Error" ); + hb_arraySetC( SubItems, HB_WINPRN_PORT, "Error" ); + hb_arraySetC( SubItems, HB_WINPRN_DRIVER, "Error" ); } - - if( pPrinterEnum4->Attributes & PRINTER_ATTRIBUTE_LOCAL ) - hb_itemPutC( Net, "LOCAL" ); - else if( pPrinterEnum4->Attributes & PRINTER_ATTRIBUTE_NETWORK ) - hb_itemPutC( Net, "NETWORK" ); - else - hb_itemPutC( Net, "ERROR" ); - - hb_arrayAddForward( SubItems, File ); - hb_arrayAddForward( SubItems, Port ); - hb_arrayAddForward( SubItems, Net ); - hb_arrayAddForward( SubItems, Driver ); - hb_arrayAddForward( ArrayPrinter, SubItems ); + hb_xfree( pPrinterInfo2 ); } + + if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL ) + hb_arraySetC( SubItems, HB_WINPRN_TYPE, "LOCAL" ); + else if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_NETWORK ) + hb_arraySetC( SubItems, HB_WINPRN_TYPE, "NETWORK" ); + else + hb_arraySetC( SubItems, HB_WINPRN_TYPE, "ERROR" ); + + hb_arrayAddForward( ArrayPrinter, SubItems ); } } CloseHandle( hPrinter ); @@ -615,118 +594,82 @@ HB_FUNC( GETPRINTERS ) } } } - hb_xfree( buffer4 ); + hb_xfree( pPrinterEnumBak ); } - } - else - { - EnumPrinters( Flags, NULL, 5, ( LPBYTE ) buffer, 0, &needed, &returned ); - - if( needed ) + else { - pPrinterEnum = buffer = ( PRINTER_INFO_5 * ) hb_xgrab( needed ); - - if( EnumPrinters( Flags, NULL, 5, ( LPBYTE ) buffer, needed, &needed, &returned ) ) + PRINTER_INFO_5 * pPrinterEnumBak; + PRINTER_INFO_5 * pPrinterEnum = pPrinterEnumBak = ( PRINTER_INFO_5 * ) hb_xgrab( needed ); + + if( EnumPrinters( Flags, NULL, 5, ( LPBYTE ) pPrinterEnum, needed, &needed, &returned ) ) { - for( a = 0; a < returned; a++, pPrinterEnum++ ) + for( a = 0; a < returned; ++a, ++pPrinterEnum ) { - if( !bLocalPrintersOnly || pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL ) + if( ! bLocalPrintersOnly || pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL ) { if( bPrinterNamesOnly ) { pszData = HB_TCHAR_CONVFROM( pPrinterEnum->pPrinterName ); - hb_itemPutC( File, pszData ); + hb_itemPutC( pPrinterName, pszData ); HB_TCHAR_FREE( pszData ); - hb_arrayAddForward( ArrayPrinter, File ); + hb_arrayAddForward( ArrayPrinter, pPrinterName ); } else { - /* Tony (ABC) 11/1/2005 1:40PM. */ - for( a = 0; a < returned; a++, pPrinterEnum++ ) + if( OpenPrinter( pPrinterEnum->pPrinterName, &hPrinter, NULL ) ) { - if( ! bLocalPrintersOnly - || pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL ) + GetPrinter( hPrinter, 2, NULL, 0, &needed ); + if( needed ) { - if( OpenPrinter( pPrinterEnum->pPrinterName, &hPrinter, NULL ) ) + hb_arrayNew( SubItems, HB_WINPRN_LEN_ ); + + pszData = HB_TCHAR_CONVFROM( pPrinterEnum->pPrinterName ); + hb_arraySetC( SubItems, HB_WINPRN_NAME, pszData ); + HB_TCHAR_FREE( pszData ); + { - GetPrinter( hPrinter, 2, NULL, 0, &needed ); - if( needed ) + PRINTER_INFO_2 * pPrinterInfo2 = ( PRINTER_INFO_2 * ) hb_xgrab( needed ); + + if( GetPrinter( hPrinter, 2, ( LPBYTE ) pPrinterInfo2, needed, &needed ) ) { - pPrinterInfo2 = ( PRINTER_INFO_2 * ) hb_xgrab( needed ); - if( pPrinterInfo2 ) - { - hb_arrayNew( SubItems, 0 ); - pszData = HB_TCHAR_CONVFROM( pPrinterEnum->pPrinterName ); - hb_itemPutC( File, pszData ); - HB_TCHAR_FREE( pszData ); - - if( GetPrinter( hPrinter, 2, ( LPBYTE ) pPrinterInfo2, needed, &needed ) ) - { - pszData = HB_TCHAR_CONVFROM( pPrinterInfo2->pPortName ); - hb_itemPutC( Port, pszData ); - HB_TCHAR_FREE( pszData ); - pszData = HB_TCHAR_CONVFROM( pPrinterInfo2->pDriverName ); - hb_itemPutC( Driver, pszData ); - HB_TCHAR_FREE( pszData ); - } - else - { - hb_itemPutC( Port, "Error" ); - hb_itemPutC( Driver, "Error" ); - } - - if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL ) - hb_itemPutC( Net, "LOCAL" ); - else if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_NETWORK ) - hb_itemPutC( Net, "NETWORK" ); - else - hb_itemPutC( Net, "ERROR" ); - - hb_arrayAddForward( SubItems, File ); - hb_arrayAddForward( SubItems, Port ); - hb_arrayAddForward( SubItems, Net ); - hb_arrayAddForward( SubItems, Driver ); - hb_arrayAddForward( ArrayPrinter, SubItems ); - hb_xfree( pPrinterInfo2 ); - } + pszData = HB_TCHAR_CONVFROM( pPrinterInfo2->pPortName ); + hb_arraySetC( SubItems, HB_WINPRN_PORT, pszData ); + HB_TCHAR_FREE( pszData ); + pszData = HB_TCHAR_CONVFROM( pPrinterInfo2->pDriverName ); + hb_arraySetC( SubItems, HB_WINPRN_DRIVER, pszData ); + HB_TCHAR_FREE( pszData ); } + else + { + hb_arraySetC( SubItems, HB_WINPRN_PORT, "Error" ); + hb_arraySetC( SubItems, HB_WINPRN_DRIVER, "Error" ); + } + + hb_xfree( pPrinterInfo2 ); } - CloseHandle( hPrinter ); + + if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL ) + hb_arraySetC( SubItems, HB_WINPRN_TYPE, "LOCAL" ); + else if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_NETWORK ) + hb_arraySetC( SubItems, HB_WINPRN_TYPE, "NETWORK" ); + else + hb_arraySetC( SubItems, HB_WINPRN_TYPE, "ERROR" ); + + hb_arrayAddForward( ArrayPrinter, SubItems ); } } - /* Tony (ABC) 11/1/2005 1:40PM. Old Code... Justo in case. */ -#if 0 - hb_arrayNew( SubItems, 0 ); - hb_itemPutC( File, pPrinterEnum->pPrinterName ); - hb_itemPutC( Port, pPrinterEnum->pPortName ); - - if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_LOCAL) - hb_itemPutC( Net,"LOCAL" ); - else if( pPrinterEnum->Attributes & PRINTER_ATTRIBUTE_NETWORK) - hb_itemPutC( Net, "NETWORK" ); - else - hb_itemPutC( Net, "ERROR" ); - - hb_arrayAddForward( SubItems, File ); - hb_arrayAddForward( SubItems, Port ); - hb_arrayAddForward( SubItems, Net ); - hb_arrayAddForward( ArrayPrinter, SubItems ); -#endif + CloseHandle( hPrinter ); } } } } - hb_xfree( buffer ); + hb_xfree( pPrinterEnumBak ); } } - hb_itemReturnForward( ArrayPrinter ); + hb_itemReturnRelease( ArrayPrinter ); - hb_itemRelease( ArrayPrinter ); + hb_itemRelease( pPrinterName ); hb_itemRelease( SubItems ); - hb_itemRelease( File ); - hb_itemRelease( Port ); - hb_itemRelease( Net ); - hb_itemRelease( Driver ); } #endif diff --git a/harbour/contrib/hbwin/win_tprn.prg b/harbour/contrib/hbwin/win_tprn.prg index e07917582a..565cdc1e16 100644 --- a/harbour/contrib/hbwin/win_tprn.prg +++ b/harbour/contrib/hbwin/win_tprn.prg @@ -205,6 +205,8 @@ ENDCLASS METHOD New( cPrinter ) CLASS WIN_PRN ::PrinterName := iif( Empty( cPrinter ), GetDefaultPrinter(), cPrinter ) + /* Initialized with the current properties of the printer [jarabal] */ + ::GetDocumentProperties() RETURN Self METHOD Create() CLASS WIN_PRN