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

Post Reply
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

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

Post by carlos vargas »

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

#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

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

   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: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

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

Post by carlos vargas »

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

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

Post by cnavarro »

Carlos
Se me ocurre algo asi

Code: Select all

   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
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

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

Post by carlos vargas »

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 _ algunas imagenes, las cuales modifique su tamaño.

Code: Select all

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

Code: Select all

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

   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
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

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

Post by Carles »

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..."

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

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

Post by carlos vargas »

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)
Post Reply