Page 3 of 3

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Thu Jul 09, 2015 2:53 pm
by cnavarro
Pues si tiene buena pinta lo que muestras, enhorabuena

Oye, de la struct del font
Code: Select all  Expand view

typedef struct tagLOGFONT {
  LONG  lfHeight;
  LONG  lfWidth;
  LONG  lfEscapement;
  LONG  lfOrientation;
  LONG  lfWeight;
  BYTE  lfItalic;
  BYTE  lfUnderline;
  BYTE  lfStrikeOut;
  BYTE  lfCharSet;
  BYTE  lfOutPrecision;
  BYTE  lfClipPrecision;
  BYTE  lfQuality;
  BYTE  lfPitchAndFamily;
  TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT, *PLOGFONT;
 


Estás pensando en darle tratamiento a todos los elementos?

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Thu Jul 09, 2015 3:04 pm
by AngelSalom
Pues de momento pensaba quedarme con :

Code: Select all  Expand view
  LONG  lfHeight;
  LONG  lfWidth;
  LONG  lfWeight;
  BYTE  lfItalic;
  TCHAR lfFaceName[LF_FACESIZE];
 


Me da a mí que con estas tengo suficiente ...

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Thu Jul 09, 2015 3:15 pm
by AngelSalom
Aquí la función que habías puesto con el añadido del cuarto parámetro pasado por array para definir la fuente. ¿Qué te parece el planteamiento? No estoy muy ducho en C ... funcionar, funciona pero igual estoy haciendo alguna burrada :? :?

Code: Select all  Expand view

HB_FUNC ( SETNONCLIENT )    // nPos , uVal, ActWinIni, aFont[cName,nHeight,nWidth]
{
   INT nPos     = hb_parni( 1 );
   INT nVal     = hb_parni( 2 );
   BOOL bActIni = hb_parl( 3 );
   LPSTR cFuente;
   INT nAltoFuente;
   INT nAnchoFuente;
   
   NONCLIENTMETRICS mi;
   
   cFuente = ( LPSTR ) hb_parvc( 4, 1 );
   nAltoFuente = ( INT ) hb_parvni ( 4 , 2);
   nAnchoFuente = ( INT ) hb_parvni ( 4 , 3);
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   switch( nPos )
   {
      case  0:   // Actualizar todo (pendiente)
           //mi.iBorderWidth     = nVal;
           mi.iScrollWidth     = nVal+12;
           mi.iScrollHeight    = nVal+12;
           mi.iCaptionWidth    = nVal+21;
           mi.iCaptionHeight   = nVal+17;
           mi.iSmCaptionWidth  = nVal+17;
           mi.iSmCaptionHeight = nVal+17;
           mi.iMenuWidth       = nVal+12;
           mi.iMenuHeight      = nVal+12;
           break;
      case  1:
           mi.iBorderWidth = nVal;
           break;
      case  2:
           mi.iScrollWidth = nVal;
           break;
      case  3:
           mi.iScrollHeight = nVal;
           break;
      case  4:
           mi.iCaptionWidth = nVal;
           break;
      case  5:
           mi.iCaptionHeight = nVal;
           break;
      case  6:
           mi.iSmCaptionWidth = nVal;
           break;
      case  7:
           mi.iSmCaptionHeight = nVal;
           break;
      case  8:
           mi.iMenuWidth = nVal;
           break;
      case  9:
           mi.iMenuHeight = nVal;
           break;
      case 10:
           strcpy (mi.lfCaptionFont.lfFaceName, cFuente);
           mi.lfCaptionFont.lfHeight = nAltoFuente;
           mi.lfCaptionFont.lfWidth = nAnchoFuente;
           break;
   }

   if ( bActIni )
     SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, SPIF_SENDCHANGE);  // Update Win.ini
   else
     SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, 0 ); // NO Update Win.ini

}

 

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Thu Jul 09, 2015 3:47 pm
by cnavarro
AngelSalom wrote:Aquí la función que habías puesto con el añadido del cuarto parámetro pasado por array para definir la fuente. ¿Qué te parece el planteamiento? No estoy muy ducho en C ... funcionar, funciona pero igual estoy haciendo alguna burrada :? :?

Code: Select all  Expand view

HB_FUNC ( SETNONCLIENT )    // nPos , uVal, ActWinIni, aFont[cName,nHeight,nWidth]
{
   INT nPos     = hb_parni( 1 );
   INT nVal     = hb_parni( 2 );
   BOOL bActIni = hb_parl( 3 );
   LPSTR cFuente;
   INT nAltoFuente;
   INT nAnchoFuente;
   
   NONCLIENTMETRICS mi;
   
   cFuente = ( LPSTR ) hb_parvc( 4, 1 );
   nAltoFuente = ( INT ) hb_parvni ( 4 , 2);
   nAnchoFuente = ( INT ) hb_parvni ( 4 , 3);
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   switch( nPos )
   {
      case  0:   // Actualizar todo (pendiente)
           //mi.iBorderWidth     = nVal;
           mi.iScrollWidth     = nVal+12;
           mi.iScrollHeight    = nVal+12;
           mi.iCaptionWidth    = nVal+21;
           mi.iCaptionHeight   = nVal+17;
           mi.iSmCaptionWidth  = nVal+17;
           mi.iSmCaptionHeight = nVal+17;
           mi.iMenuWidth       = nVal+12;
           mi.iMenuHeight      = nVal+12;
           break;
      case  1:
           mi.iBorderWidth = nVal;
           break;
      case  2:
           mi.iScrollWidth = nVal;
           break;
      case  3:
           mi.iScrollHeight = nVal;
           break;
      case  4:
           mi.iCaptionWidth = nVal;
           break;
      case  5:
           mi.iCaptionHeight = nVal;
           break;
      case  6:
           mi.iSmCaptionWidth = nVal;
           break;
      case  7:
           mi.iSmCaptionHeight = nVal;
           break;
      case  8:
           mi.iMenuWidth = nVal;
           break;
      case  9:
           mi.iMenuHeight = nVal;
           break;

#if (WINVER >= 0x0600)
      case 10:
           mi.iPaddedBorderWidth = nVal;
#endif

      case 11:
           strcpy (mi.lfCaptionFont.lfFaceName, cFuente);
           mi.lfCaptionFont.lfHeight = nAltoFuente;
           mi.lfCaptionFont.lfWidth = nAnchoFuente;
           break;
   }

   if ( bActIni )
     SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, SPIF_SENDCHANGE);  // Update Win.ini
   else
     SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, 0 ); // NO Update Win.ini

}

 


Angel, el font ha de comenzar en el case 11:
Lo he modificado sobre tu codigo, pero no lo he probado

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Thu Jul 09, 2015 4:07 pm
by AngelSalom
Ok, lo cambio.

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Thu Jul 09, 2015 4:12 pm
by cnavarro
Ah, para no tener que construir el array en funcion del ofont del Window o dialog activo, o cualquier otro Font definido previamente

Code: Select all  Expand view


&(FontToText( oWnd:oFont ))

 

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Wed May 25, 2016 3:06 am
by FranciscoA
Amigos del Foro.
Mis conocimientos de "C" son nulos.

Estoy tratando de incluir las funciones creadas aqui por Angel Salomon y Cristobal Navarro, en un proyecto Comandero para ampliar el tamaño de los Scrols Vertical y Horizontal.

Code: Select all  Expand view
#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "hbcomp.h"


#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "hbcomp.h"


HB_FUNC ( NONCLIENTGET )
{
   
   NONCLIENTMETRICS mi;
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   // Devuelvo un array con los valores antes de cambiarlos
   
   hb_reta(4);
   hb_storvni(mi.iScrollWidth, -1, 1);
   hb_storvni(mi.iScrollHeight,-1, 2);
   hb_storvni(mi.iCaptionHeight, -1, 3);
   hb_storvni(mi.iMenuHeight, -1, 4);
   
}


HB_FUNC ( NONCLIENTSET )
{
   
   NONCLIENTMETRICS mi;
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   // Grabar el valor

   mi.iScrollWidth = hb_parnl( 1 );
   mi.iScrollHeight = hb_parnl( 2 );
   mi.iCaptionHeight = hb_parnl ( 3 );
   mi.iMenuHeight = hb_parnl ( 4 );
   
   SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, 0 ); //SPIF_SENDCHANGE);  // Update Win.ini

}
 
#pragma ENDDUMP
 


Al compilar me tira el siguiente warning:
Warning W8065 D:\\RESTTO~1\\RESTOR~1\\comndero.prg 1436: Call to function 'hb_storvni' with no prototype in function HB_FUN_NONCLIENTGET

Aunque crea el ejecutable y funciona bien, al salir no devuelve los Scrols a su tamaño original.

Como dije, desconozco el lenguaje C, y por lo tanto no soy capaz de modificar este codigo.

Quizas Cristobal, Angel o alguien mas quiera "darme una luz".

Gracias.

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Wed May 25, 2016 10:09 am
by cnavarro
Francisco, estás usando xHarbour?

Si es asi
viewtopic.php?f=3&t=22538&hilit=hb_storvni+xharbour#p120168

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Wed May 25, 2016 3:59 pm
by FranciscoA
Francisco, estás usando xHarbour?

Si es asi
viewtopic.php?f=3&t=22538&hilit=hb_storvni+xharbour#p120168


Cristobal, muchas gracias. Está todo claro.

Decidí usar solo la function NonClient(), ya que mi unica necesidad era el tamaño de los Scrolls:
Al iniciar NonClient(30,30), y al salir del programa NonClient(18,18) //solo dos parametros

Saludos.