Page 1 of 2
Opcion para activar DPIAwareness
Posted: Fri Aug 15, 2025 12:04 am
by carlos vargas
usualmente la mejora visual para los monitores de gran resolucion requiere que agregemos unas lineas en el manifest file de nuestra app, pero existe otra posibilidad, y es esta:
repito, esta es una opción, lo recomendado por MS es el manifest, pero es interesante conocerla.
Code: Select all | Expand
#define PROCESS_DPI_UNAWARE 0
#define PROCESS_SYSTEM_DPI_AWARE 1
#define PROCESS_PER_MONITOR_DPI_AWARE 2
...
procedure main()
...
SetDPIAwareness( PROCESS_PER_MONITOR_DPI_AWARE )
...
return
#pragma BEGINDUMP
#include <windows.h>
#include <shellscalingapi.h>
HB_FUNC( SETDPIAWARENESS )
{
hb_retnl( (HB_LONG) SetProcessDpiAwareness( (PROCESS_DPI_AWARENESS) hb_parni(1) ) );
}
IMPORTANTE: se debe agreagr la libreria shcore.lib del compilador c
Re: Opcion para activar DPIAwareness
Posted: Fri Aug 15, 2025 2:59 pm
by karinha
Maestro Carlos, perdón por mi tontería pero ¿en qué resolución de video sería necesario esto?
Gracias, tks.
Regards, saludos.
Re: Opcion para activar DPIAwareness
Posted: Fri Aug 15, 2025 5:01 pm
by carlos vargas

Usualmente cuando la escala es mayor a 1 Windows intenta hacer un escalado de los controles, bitmaps, fuentes, etc. Quedando un efecto blur, por ello se usa el dpiawarenessen el manifest, está sería otra posibilidad de hacerlo.
De echo es necesario hacerlo siempre, nunca sabemos donde se ejecutará nuestra app.

En este caso la escala es de 1.5-> 150%, con esta conf nuestra app si no tiene activado el dpiaware se vería un poco borroso.
Re: Opcion para activar DPIAwareness
Posted: Fri Aug 15, 2025 6:01 pm
by karinha
Entendido. Hago lo siguiente: establezco la resolución de pantalla en 1024 x 768 y 1280 x 768. En la configuración del sistema, el usuario puede elegir entre estas dos pantallas creadas en Workshop.exe. De esta forma, la visión del usuario no se ve afectada por una resolución exagerada.
Gracias, tks.
Regards, saludos.
Re: Opcion para activar DPIAwareness
Posted: Wed Sep 17, 2025 3:04 pm
by leandro
Amigo Carlos buenos días como estas?
Y el código de manifest, sabes como debe ir? lo podrias compartir?
Re: Opcion para activar DPIAwareness
Posted: Fri Sep 19, 2025 10:50 pm
by carlos vargas
agregar la seccion
<asmv3:application>
Code: Select all | Expand
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
....
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
....
Re: Opcion para activar DPIAwareness
Posted: Mon Sep 22, 2025 11:34 am
by toninhofwi
Hi friends, I use this way:
HB_FUNC_STATIC( SETDPIAWARE )
{
hb_retl( ( BOOL ) SetProcessDPIAware() );
}
Cheers.
Re: Opcion para activar DPIAwareness
Posted: Tue Sep 23, 2025 8:54 pm
by MGA
En nuestros programas que utilizan fivewin, ¿deberíamos usar esto?
HB_FUNC_STATIC( SETDPIAWARE )
{
hb_retl( ( BOOL ) SetProcessDPIAware() );
}
Re: Opcion para activar DPIAwareness
Posted: Wed Sep 24, 2025 8:31 am
by toninhofwi
En nuestros programas que utilizan fivewin, ¿deberíamos usar esto?
Cuando utilices esto, tendrás que realizar las rutinas de escalado de pantallas basadas en cada resolución, la ventaja es que desaparece el efecto blur típico del escalado de Windows. La desventaja es que todo queda en nuestras manos.
Re: Opcion para activar DPIAwareness
Posted: Wed Nov 12, 2025 10:28 pm
by alvaro533
Hola a todos,
Tengo un monitor 4k escalado al 150% o 175% . Para que los textos no se vean borrosos en las aplicaciones de fwh64 he puesto esto en el manifiesto, como decía Carlos:
Code: Select all | Expand
<!-- Configuración de DPI para Windows 10/11 -->
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
Ahora las letras se ven muy nítidas, pero demasiado pequeñas. ¿Cómo puedo solucionarlo?
Muchas gracias y un saludo,
Alvaro
Re: Opcion para activar DPIAwareness
Posted: Thu Nov 13, 2025 9:53 pm
by alvaro533
toninhofwi wrote: Wed Sep 24, 2025 8:31 am
En nuestros programas que utilizan fivewin, ¿deberíamos usar esto?
Cuando utilices esto, tendrás que realizar las rutinas de escalado de pantallas basadas en cada resolución, la ventaja es que desaparece el efecto blur típico del escalado de Windows. La desventaja es que todo queda en nuestras manos.
Hola. Podrías compartir las rutinas de escalado de las que hablas? Has modificado la clase Window?
Gracias Álvaro
Re: Opcion para activar DPIAwareness
Posted: Tue Nov 18, 2025 4:08 pm
by carlos vargas
Con el asunto de las letras pequeñas, se debe crear la fuente en base al dpi actual. En un rato pongo el codigo que tengo.
Re: Opcion para activar DPIAwareness
Posted: Tue Nov 18, 2025 4:33 pm
by carlos vargas
Code: Select all | Expand
#include "Fivewin.ch"
#include "Common.ch"
PROCEDURE Main()
LOCAL oWnd, oIco, oFnt
PRIVATE nDpi
nDpi := GetDpiForSystem()
DEFINE ICON oIco NAME "A"
DEFINE FONT oFnt NAME "Tahoma" SIZE 0, ScaleFontSize( -12, nDpi )
DEFINE WINDOW oWnd TITLE "Prueba MyBox" SIZE 600, 400 ICON oIco PIXEL
oWnd:SetFont( oFnt )
...
/*----------------------------------------------------------------------------*/
DLL32 FUNCTION GetDpiForSystem() AS LONG PASCAL LIB "User32.dll"
/*----------------------------------------------------------------------------*/
FUNCTION ScaleFontSize( nBaseSize, nDpi )
RETURN Int( nBaseSize * nDpi / 96 )
/*----------------------------------------------------------------------------*/
Re: Opcion para activar DPIAwareness
Posted: Tue Nov 18, 2025 5:28 pm
by karinha
Maestro Carlos Vargas, disculpe mi ignorancia, pero si entendí bien su ejemplo, esto funciona para una ventana, ¿pero qué pasa con los DIÁLOGOS? ¿Podría mostrarnos cómo se vería con imágenes, por favor?
Gracias, tks.
Regards, saludos.
Re: Opcion para activar DPIAwareness
Posted: Tue Nov 18, 2025 10:39 pm
by carlos vargas