Page 1 of 1

Fuentes grandes

PostPosted: Fri Mar 03, 2006 7:52 am
by José Luis Sánchez
Hola:
Quiero que mis programas tomen automaticamente la fuente de Windows y el tamaño de fuente. Con GetSysFont() puedo recuperar la fuente del sistema, pero ¿ y el tamaño ? Lo puedo hacer a ojo preguntando por LargeFonts() pero me parece una chapuza. Ahora la fuente de mi app la defino así:
::oFont = TFont():New( GetSysFont(), 0, iif(LargeFonts(),-13,-10),, )
pero me gustaría que el tamaño de la fuente fuera la del sistema.

Luego está el tema de los controles pintados a mano que tienen fuente propia, como los TTabs. ¿ Alguien sabe cuales son todos los controles que definen su propia fuente ?

Saludos,
José Luis

PostPosted: Fri Mar 03, 2006 7:54 am
by José Luis Sánchez
Olvide decir que si cambias las fuentes de tu sistema por fuentes grandes, la fuente del menú de la ventana principal se cambia automáticamente a fuente grande aunque tengas defina una fuente cualquiera en tu aplicación. ¿ De donde cogen los menús la fuente ?

Gracias de nuevo,

PostPosted: Fri Mar 03, 2006 9:04 am
by Antonio Linares
Jose Luis,

Posiblemente te sirva la función GetTextMetrics() del API.

Los menus no son sino un tipo especializado de ventana, por lo que podrás pedirles su fuente con WM_GETFONT y luego usar GetTextMetrics() también.

PostPosted: Fri Mar 03, 2006 2:35 pm
by José Luis Sánchez
¿ Y un poquito de código sería posible ?

Saludos,

PostPosted: Fri Mar 03, 2006 2:37 pm
by Antonio Linares
Jose Luis,

La función GetTextMetrics() usa una estructura TEXTMETRIC que mira todo lo que contiene:
Code: Select all  Expand view
typedef struct tagTEXTMETRIC { // tm 
    LONG tmHeight;
    LONG tmAscent;
    LONG tmDescent;
    LONG tmInternalLeading;
    LONG tmExternalLeading;
    LONG tmAveCharWidth;
    LONG tmMaxCharWidth;
    LONG tmWeight;
    LONG tmOverhang;
    LONG tmDigitizedAspectX;
    LONG tmDigitizedAspectY;
    BCHAR tmFirstChar;
    BCHAR tmLastChar;
    BCHAR tmDefaultChar;
    BCHAR tmBreakChar;
    BYTE tmItalic;
    BYTE tmUnderlined;
    BYTE tmStruckOut;

    BYTE tmPitchAndFamily;
    BYTE tmCharSet;
} TEXTMETRIC;

habrá que ver que valor es el que necesitas de todos esos.

PostPosted: Wed Mar 08, 2006 5:44 pm
by José Luis Sánchez
Ya lo arreglé.

http://www.avemundi.com

Saludos,