FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour WindowsXp.Manifest
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 09:27 AM
Antonio . Estos cambios no me resuelven el problema . Me imprime siempre en la impresora por defecto .
el nombre de la impresora "miEpson" es el nombre que tiene la impresora compartida , es una Epson LQ-300 . Hasta el momento funcionaba sin ning煤n problema.
en :
Code (fw): Select all Collapse
聽 聽 聽 聽 聽 聽 pausa(cImpre) 聽// Valor cImpre == "miEpson"
聽 聽 聽 聽 聽 聽 PRINT oPrn NAME cTitle TO cImpre


en printer :

Code (fw): Select all Collapse
聽 聽 ....
聽 聽 聽 聽 pausa(cModel) 聽// cModel 聽llega valor "miEpson" pero imprime en la impresora por defecto 
聽 聽 聽 ::hDC = PrinterDcFromName( , cModel, ) 聽// cambia aqui !!!
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 11:21 AM
Amplio lo anterior :
Code (fw): Select all Collapse
    pausa( StrTran( StrTran( StrTran( ;
       GetProfString( "Devices", 0 ), Chr( 0 ), Chr( 15 ) ), Chr( 13 ) ), Chr( 10 ) )   )  // la impresora "miEpson" existe con este nombre 

聽 聽 pausa(cModel) 聽// cModel 聽llega valor "miEpson" pero imprime en la impresora por defecto 
聽 聽 聽 ::hDC = PrinterDcFromName( , cModel, ) 聽// cambia aqui !!!

聽 聽 聽cModel = ::GetModel()
聽 聽 聽 pausa(cModel) 聽 聽// cModel 聽aqui tiene valor "BROTHER HL" que esta por defecto
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 01:14 PM
Manuel,

En la funci贸n PrinterDcFromName() llamamos a la funci贸n CreateDC() del API de Windows:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd183490(v=vs.85).aspx

En la documentaci贸n del primer par谩metro que recibe CreateDC() comentan:

lpszDriver
A pointer to a null-terminated character string that specifies either DISPLAY or the name of a specific display device. For printing, we recommend that you pass NULL to lpszDriver because GDI ignores lpszDriver for printer devices.


Es decir, tenemos que proporcionarle NULL. En el c贸digo actual de FWH tenemos:
Code (fw): Select all Collapse
HB_FUNC( PRINTERDCFROMNAME ) // ( cDriver, cModel, cPort )
{
   LPDEVMODE  lpDevMode;

   lpDevMode  = (LPDEVMODE) GlobalLock( pd.hDevMode );

   hb_retnl( ( LONG ) CreateDC( ( LPSTR ) hb_parc( 1 ),
                    ( LPSTR ) hb_parc( 2 ),
                    ( LPSTR ) hb_parc( 3 ),
                    lpDevMode ) );

   GlobalUnlock( pd.hDevMode );
}


Habr铆a que comprobar si hb_parc( 1 ) de un valor nil devuelve una cadena vacia 贸 NULL.

Lo que comentas de que el segundo par谩metro cModel cambia, eso parece imposible (a primera vista) pues desde esa funci贸n no se modifica el valor de esa variable.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 01:16 PM
En el tercer par谩metro tenemos el mismo caso, ya que tenemos que suministrarle un NULL:

lpszOutput
This parameter is ignored and should be set to NULL. It is provided only for compatibility with 16-bit Windows.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 01:22 PM
Comprobado y efectivamente Harbour genera un NULL desde un valor nil:

Code (fw): Select all Collapse
HB_FUNC( PRINTERDCFROMNAME ) // ( cDriver, cModel, cPort )
{
   LPDEVMODE  lpDevMode;

   lpDevMode  = (LPDEVMODE) GlobalLock( pd.hDevMode );

   if( hb_parc( 1 ) != NULL )
      MessageBox( 0, "not NULL", "ok", 0 );   

   hb_retnl( ( LONG ) CreateDC( ( LPSTR ) hb_parc( 1 ),
                    ( LPSTR ) hb_parc( 2 ),
                    ( LPSTR ) hb_parc( 3 ),
                    lpDevMode ) );

   GlobalUnlock( pd.hDevMode );
}


Este ejemplo esta funcionando correctamente aqui:
Code (fw): Select all Collapse
#include "FiveWin.ch"

function Main()

   local oPrn

   PRINTER oPrn PREVIEW TO "Fax"
   
      PAGE
      
         oPrn:Say( 1, 1, "Hello world" )
      
      ENDPAGE

   ENDPRINTER

return nil


Debe tratarse de otra cosa lo que te ocurre en tu aplicaci贸n. Esa variable cModel es p煤blica ? Puede estar siendo modificada desde otro evento ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 01:26 PM

Carlos,

Si, la incluiremos en el siguiente build de FWH, aunque aun estamos pendientes de las pruebas de Manuel, para ver que le ocurre.

Si tu barra de botones principal tiene el estilo 2010 entonces el preview usa ese estilo tambien automaticamente :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 505
Joined: Sat Apr 22, 2006 09:09 AM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 01:41 PM

Hola Antonio:

En lo referente a la PREVIEW si te lo comento es porque no tengo barra de botones y por eso te lo dec铆a para que aparezca la del 2010.

Un saludo

Carlos

Colt Hop ED, S.L.
Carlos Blas Fern谩ndez Dom铆nguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 03:33 PM
Tengo delimitado el problema :
Code (fw): Select all Collapse
unction Main()

   local oPrn

   PRINT oPrn TO "miEpson" // Brother HL duplex"
      
     oPrn:SetPage(1)   // aqui esta el problema  ... si no pongo esta linea me lo manda a la Epson , si la pongo me lo manda a la Brother ( defecto ) 
     
      PAGE
         oPrn:Say( 4, 4, "hola mundo" )
      ENDPAGE
   ENDPRINT

return nil
Posts: 505
Joined: Sat Apr 22, 2006 09:09 AM
Re: WindowsXp.Manifest
Posted: Tue Nov 05, 2013 06:03 PM

Hola Antonio:

Pasa que el PREVIEW cuando le das a la lupa amplia a lo ancho pero no a lo largo y sale deformado. Se puede arreglar.

Un saludo

Carlos

Colt Hop ED, S.L.
Carlos Blas Fern谩ndez Dom铆nguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: WindowsXp.Manifest
Posted: Thu Nov 07, 2013 08:15 AM
驴 tenemos algo nuevo ? .

mastintin wrote:Tengo delimitado el problema :
Code (fw): Select all Collapse
unction Main()

   local oPrn

   PRINT oPrn TO "miEpson" // Brother HL duplex"
      
     oPrn:SetPage(1)   // aqui esta el problema  ... si no pongo esta linea me lo manda a la Epson , si la pongo me lo manda a la Brother ( defecto ) 
     
      PAGE
         oPrn:Say( 4, 4, "hola mundo" )
      ENDPAGE
   ENDPRINT

return nil
Posts: 505
Joined: Sat Apr 22, 2006 09:09 AM
Re: WindowsXp.Manifest
Posted: Thu Nov 07, 2013 10:47 AM

Hola a todos:

He detectado otro problema, Cuando pongo botones en un DIALOG y le asigno una letra para ejecutarlo con el ALT "&Alta" la combinaci贸n de letras Alt+A no ejecuta el bot贸n. sin embargo si es una WINDOW si funciona.

Un saludo

Carlos

Colt Hop ED, S.L.
Carlos Blas Fern谩ndez Dom铆nguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.

Continue the discussion