FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problema DPI y tamaño de texto al 150% en windows 10
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Problema DPI y tamaño de texto al 150% en windows 10
Posted: Thu Feb 28, 2019 09:19 PM
Tengo problemas con una app en una app que es full hd, se mira borroso y pequeño, lo borroso se corriege con una conf del so de control de DPI, en esta laptop, el texto esta a 150% que es lo recomendado por el equipo.

revisando un poco la web me encontre con esta pagina:
http://www.rw-designer.com/DPI-aware
ya con esa info, he hecho esto:
Code (fw): Select all Collapse
#pragma BEGINDUMP

#include "hbapi.h"
#include "windows.h"

HB_FUNC( HB_GETSYSMETRIC_ICON )
{
  hb_retni( GetSystemMetrics( SM_CXSMICON ) );
}

HB_FUNC( FW_FSCALE )
{
   HWND hWnd = GetActiveWindow();
   HDC hdc = GetDC( hWnd );
   float fScale = GetDeviceCaps( hdc, LOGPIXELSX ) / 96.0f;
   ReleaseDC( hWnd, hdc );

   hb_retnd( (double) fScale );
}
#pragma ENDDUMP

con esta funcio FW_FSCALE, en mi app al inicio tengo esto:
Code (fw): Select all Collapse
PROCEDURE Main()
   LOCAL oBrush, nScale := fw_fScale()
   ?nScale //retorna 1.5

con lo cual nScale me retorna 1.5 que seria el valor a escalar el tamaño de las fuentes, y el tamaño de los controles, con las fuente ya hago esto y funciona:
Code (fw): Select all Collapse
   DEFINE FONT oFont  NAME "TAHOMA" SIZE 0, ( -13 * nScale )
   DEFINE FONT oFontD NAME "TAHOMA" SIZE 0, ( -13 * nScale )

pero con los controles no se como hacerlo para que se aplique a todos ellos.
me podrian dar una mano con esto.

salu2
carlos vargas
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Problema DPI y tamaño de texto al 150% en windows 10
Posted: Thu Feb 28, 2019 09:24 PM
tambien he modificado un poco mi manifest file con lo que ellos recomiendan.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Problema DPI y tamaño de texto al 150% en windows 10
Posted: Thu Feb 28, 2019 10:06 PM
Carlos
Se me ocurre algo asi
Code (fw): Select all Collapse
   AEVal( oDlg:aControls, { | o | o:nWidth := o:nWidth * nScale, o:nHeight := o:nHeight * nScale, o:Move( .... ) } )
// Ahi tendrás que probar las distintas posibilidades con los metodos Move, Resize, etc., incluso quizás en lugar de modificar el width y el height, quizás tengas que
// modificar el nRight y el nBottom, prueba y nos vas contando
// También puedes poner eso antes del ACTIVATE, o en el ON INIT
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Problema DPI y tamaño de texto al 150% en windows 10
Posted: Fri Mar 01, 2019 04:47 PM
Pues con el manifest se quito lo borroso, y con el escalado a la fuente se mira bien.



a los controles no fue necesario hacerle nada, salvo al ancho de las columnas de xbrowse, las cuales las incremente segun la escala.
tambien los item de las statusbar, y el ancho en los botones de las toolbar. y en algunos casos algunas imagenes, las cuales modifique su tamaño.


Code (fw): Select all Collapse
   IF nScale > 0
      AEval( oBrw:aCols, {|o| o:nWidth *= nScale } )
   ENDIF

Code (fw): Select all Collapse
STATIC PROCEDURE Clie_Toolbar()
   LOCAL oCursor := CrearCursorBarraBotones()

   DEFINE BUTTONBAR oToolBar OF oDlg SIZE (60*nScale), 60 2015 CURSOR oCursor
...
   DEFINE MSGBAR oMsgBar OF oDlg PROMPT "INS=Nuevo, DEL=Borrar, ENTER=Editar, F3=Imprimir, F4=Documentos, F5=Filtrar, F6=Prestamos, F9=Refrescar." 2010 FONT oFontD
   DEFINE MSGITEM oItem OF oMsgBar PROMPT "TODOS" SIZE (125*nScale) COLOR CLR_RED

Code (fw): Select all Collapse
   IF HB_IsObject( ::oBitmap ) .and. ::oBitmap:hBitmap <> 0
      IF nScale > 0
         ::oBitmap:hBitmap := ResizeBitmap( ::oBitmap:hBitmap, (::oBitmap:nWidth*nScale)+4, (::oBitmap:nHeight*nScale)+4 )
      ENDIF
      IF ::oBitmap:HasAlpha()
         ABPaint( ::hDC, 0, 0, ::oBitmap:hBitmap, 200 )
      ELSE
         DrawBitmap( ::hDC, ::oBitmap:hBitmap, 0, 0 )
      ENDIF
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Problema DPI y tamaño de texto al 150% en windows 10
Posted: Fri Mar 01, 2019 06:46 PM
Carlos,

Muy bueno !.

carlos vargas wrote:tambien he modificado un poco mi manifest file con lo que ellos recomiendan.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>


Como has conseguido los paràmetros correctos ?

Comno se ve en otro monitor inferior ?
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Problema DPI y tamaño de texto al 150% en windows 10
Posted: Sat Mar 02, 2019 01:24 PM
Carles, en este sitio obtuve la info
http://www.rw-designer.com/DPI-aware
en pantalla tamaño normal todo ok, ya que nSscale da un valor de 1 y con eso el escalado se mantiene en su valor original.
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)

Continue the discussion