Problema DPI y tamaño de texto al 150% en windows 10

Problema DPI y tamaño de texto al 150% en windows 10

Postby carlos vargas » Thu Feb 28, 2019 9: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: Select all  Expand view  RUN

#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: Select all  Expand view  RUN

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: Select all  Expand view  RUN

   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
Last edited by carlos vargas on Thu Feb 28, 2019 9:25 pm, edited 1 time in total.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Problema DPI y tamaño de texto al 150% en windows 10

Postby carlos vargas » Thu Feb 28, 2019 9: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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Problema DPI y tamaño de texto al 150% en windows 10

Postby cnavarro » Thu Feb 28, 2019 10:06 pm

Carlos
Se me ocurre algo asi
Code: Select all  Expand view  RUN

   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
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Problema DPI y tamaño de texto al 150% en windows 10

Postby carlos vargas » Fri Mar 01, 2019 4:47 pm

Pues con el manifest se quito lo borroso, y con el escalado a la fuente se mira bien.
Image
Image

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: Select all  Expand view  RUN

   IF nScale > 0
      AEval( oBrw:aCols, {|o| o:nWidth *= nScale } )
   ENDIF
 

Code: Select all  Expand view  RUN

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: Select all  Expand view  RUN

   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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Problema DPI y tamaño de texto al 150% en windows 10

Postby Carles » Fri Mar 01, 2019 6: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
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1143
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Problema DPI y tamaño de texto al 150% en windows 10

Postby carlos vargas » Sat Mar 02, 2019 1: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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua


Return to FiveWin para Harbour/xHarbour

Who is online

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