Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Tamaño de la fuente

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Tamaño de la fuente Responder citando

Repasando una pregunta que hice (Más sobre el registro de Windows XP) me ha surgido otra duda: ¿Cómo sé el tamaño de la fuente de los elementos del escritorio?

Por ejemplo: Para los cuadros de mensaje yo tengo definida la fuente Arial 9, pero en el registro me parece este valor:
Cita:
MessageFont REG_BINARY f4 ff ff ff 00 etc.

¿Cómo saco los datos que indico a partir de ese valor? Con esto:
Código:
char buffer[1024];
memset(buffer, '\0', sizeof(buffer));
TRegistry *rRegistro = new TRegistry();
rRegistro->RootKey = HKEY_CURRENT_USER;
rRegistro->OpenKeyReadOnly("Control Panel\\Desktop\\WindowMetrics");
rRegistro->ReadBinaryData("MessageFont", buffer, sizeof(buffer));

leo el contenido del registro, peor no sé como convertir esto:
Cita:
ôÿÿÿ\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0A\0r\0i\0a\0l\0\0\0B\0l\0a\0c\0k\0\0\0B\0T\0

en algo interpretable.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel escribió:
leo el contenido del registro, peor no sé como convertir esto

Lo que se guarda ahi es el contenido de la estructura LOGFONTW. Un ejemplo:
Código:
LOGFONTW lf;
TRegistry* rRegistro = new TRegistry();
rRegistro->OpenKeyReadOnly("Control Panel\\Desktop\\WindowMetrics");
rRegistro->ReadBinaryData("MessageFont", &lf, sizeof(lf));
delete rRegistro;

ShowMessage(lf.lfFaceName);
ShowMessage(-lf.lfHeight * 72 / PixelsPerInch);  // Size

Aunque lo mas apropiado seria leerlo de este otro modo, ya que nunca se sabe si en el futuro Microsoft puede cambiar la forma de guardar este valor en el registro:
Código:
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0))
{
    ShowMessage(ncm.lfMessageFont.lfFaceName);
    ShowMessage(-ncm.lfMessageFont.lfHeight * 72 / PixelsPerInch);  // Size
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias Leo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.