WindowsXp.Manifest

Re: WindowsXp.Manifest

Postby mastintin » Tue Nov 05, 2013 9: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: Select all  Expand view


            pausa(cImpre)  // Valor cImpre == "miEpson"
            PRINT oPrn NAME cTitle TO cImpre
     
         
 


en printer :

Code: Select all  Expand view

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

 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: WindowsXp.Manifest

Postby mastintin » Tue Nov 05, 2013 11:21 am

Amplio lo anterior :
Code: Select all  Expand view


    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

 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: WindowsXp.Manifest

Postby Antonio Linares » Tue Nov 05, 2013 1: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: Select all  Expand view
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WindowsXp.Manifest

Postby Antonio Linares » Tue Nov 05, 2013 1: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WindowsXp.Manifest

Postby Antonio Linares » Tue Nov 05, 2013 1:22 pm

Comprobado y efectivamente Harbour genera un NULL desde un valor nil:

Code: Select all  Expand view
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: Select all  Expand view
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WindowsXp.Manifest

Postby Antonio Linares » Tue Nov 05, 2013 1: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WindowsXp.Manifest

Postby colthop » Tue Nov 05, 2013 1: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.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: WindowsXp.Manifest

Postby mastintin » Tue Nov 05, 2013 3:33 pm

Tengo delimitado el problema :
Code: Select all  Expand view

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

 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: WindowsXp.Manifest

Postby colthop » Tue Nov 05, 2013 6: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.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: WindowsXp.Manifest

Postby mastintin » Thu Nov 07, 2013 8:15 am

¿ tenemos algo nuevo ? .

mastintin wrote:Tengo delimitado el problema :
Code: Select all  Expand view

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

 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: WindowsXp.Manifest

Postby colthop » 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.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 30 guests