Red de conocimiento informático - Material del sitio web - Cómo cambiar el tamaño de fuente de un control en un cuadro de diálogo mfc

Cómo cambiar el tamaño de fuente de un control en un cuadro de diálogo mfc

La configuración de fuente del cuadro de diálogo de VC es efectiva para todos los controles y la fuente del texto estático no se puede cambiar individualmente. Primero cree un objeto Font usando CreateFont y luego llame a SetFont del control.

Ejemplo:

1. Cambie el ID del estilo estático, como IDC_STATIC1.

2. Agregue un control de edición y cree un control asociado m_editControl.

3. Agregue el siguiente código en OnInitDialog:

CFont * f

f = new CFont

f-& gt; CreateFont(16, //n altura

0, //n ancho

0, // nEscapement

0, //n dirección

FW_BOLD, //Peso NW

TRUE, // bItalic

FALSE, // bUnderline

0, // cStrikeOut

ANSI_CHARSET, // nCharSet

OUT_DEFAULT_PRECIS, // nOutPrecision

CLIP_DEFAULT_PRECIS, // nClipPrecision

Calidad predeterminada, //nQuality

DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

_ T(" Arial ")); // lpszFac

m_editControlset font(f);

M_editControlSetWindowText( " Pregunte a los expertos");

GetDlgItem(IDC_static 1)-& gt;set font(f);

Los resultados de la ejecución se muestran en la siguiente figura. Descargue el ejemplo completo CtrlFont.zip.

Cabe señalar que aquí se utiliza el puntero CFont, no la variable local CFont ordinaria. Si el programa se cambia a lo siguiente:

CFont f;

f.CreateFont(16, //n altura

0, //n ancho

0, // nEscapement

0, //n dirección

FW_BOLD, //NW peso

TRUE, // bCursiva

FALSE, // bUnderline

0, // cStrikeOut

ANSI_CHARSET, // nCharSet

OUT_DEFAULT_PRECIS, // nOutPrecision

CLIP_DEFAULT_PRECIS, // nClipPrecision

Calidad predeterminada, //n calidad

DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

_ T(" Arial " )) ;

m_editControlset font(& f);

M_editControlSetWindowText("Pregunte a un experto");

GetDlgItem(IDC_static 1)-& gt; font(& amp; f);

El efecto deseado no se obtendrá después de ejecutarlo, porque CFont f se borrará después de ejecutar la función OnInitDialog. Antes de cerrar el cuadro de diálogo, debe asegurarse de que el objeto de fuente establecido por SetFont sea válido. Por lo tanto, generalmente se utilizan punteros o miembros de clase para guardar objetos de fuente establecidos.

Para programas que no son MFC, primero use CreateFont para crear un identificador de fuente, luego use SendMessage para enviar un mensaje al control WM_SETFONT y asignar el identificador de fuente establecido.

CHeight es la altura de la fuente.

CWidth es el ancho de la fuente.

CEscapement es el ángulo de inclinación de la fuente.

La orientación es el ángulo de inclinación de la fuente.

CWeight es el grosor de la fuente.

BItalic es si la fuente está en cursiva.

B El subrayado indica si la fuente está subrayada.

BStrikeOut es si la fuente está tachada.

ICharSet es el juego de caracteres utilizado por la fuente.

IOutPrecision especifica cómo seleccionar la fuente adecuada.

IClipPrecision se utiliza para determinar la precisión del corte.

¿Cómo coincide iQuality con las fuentes seleccionadas?

IPitchAndFamily es un símbolo de intervalo y un símbolo de atributo.

PszFaceName es el nombre de la fuente.

Traducción MSDN de la función CreateFont()

Función: esta función crea una fuente lógica especial que puede ser seleccionada por cualquier dispositivo en el futuro.

Prototipo de función: HFONT CreateFont(int nHeight,

int nWidth,

Paisaje interno,

Nutrición,

int fnWeight,

DWORD fdwltalic,

DWORD fdwUnderline,

DWORD fdwStrikeOut,

DWORD fdwCharSet,

DWORD fdwOutputPrecision,

DWORD fdwClipPrecision,

DWORD fdwQuality,

DWORD fdwPitchAndFamily,

LPCTSTR lpsz face);

Parámetros:

NHeight: Especifica la unidad de carácter o la altura de la unidad lógica de la fuente. El valor de altura de un carácter (también llamado altura em) es el valor de altura de la unidad de carácter menos el valor del encabezado interno. El asignador de fuentes interpreta los valores especificados por nHeight de la siguiente manera, con cada valor representado:

& gt0: el asignador de fuentes convierte este valor a unidades de dispositivo y coincide con la altura de la unidad de la fuente existente.

0: la transformación del asignador de fuentes utiliza el valor de altura predeterminado al seleccionar coincidencias.

& lt0: el asignador de fuentes convierte el valor a unidades de dispositivo y hace coincidir su valor absoluto con la altura de los caracteres de la fuente existente.

Al comparar todas las alturas, el asignador de fuentes elige la fuente más grande que no exceda el tamaño requerido.

Este mapeo ocurre la primera vez que se utiliza la fuente.

Para el modo de mapeo MM_TEXT, se puede utilizar la siguiente fórmula para determinar la altura de una fuente con un tamaño de punto específico:

nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY ), 72)

NWidth: Especifica el ancho promedio de las unidades lógicas de caracteres en la fuente deseada. Si el valor es 0, el asignador de fuentes selecciona el valor coincidente más cercano, que se determina comparando el valor absoluto de la diferencia entre los coeficientes característicos del dispositivo actual y los coeficientes característicos digitalizados de las fuentes disponibles.

Escape N: Especifica el ángulo entre el vector de desplazamiento y el eje X del dispositivo, en décimas de grado. El vector de desplazamiento es paralelo a la línea de base de la normal.

Windows NT: cuando el dispositivo gráfico está configurado en GM_ADVANCED, el ángulo de desplazamiento de la cadena se puede especificar independientemente del ángulo de posicionamiento de los caracteres en la cadena.

Cuando el modo de gráficos está configurado en GM_COMPATIBLE, nEscapement especifica el ángulo de desplazamiento y el ángulo de posicionamiento. Puede establecer nEscapement y nOrientation en el mismo valor.

Windows 95: n escape especifica el ángulo de desplazamiento y el ángulo de posicionamiento. Puede establecer n escape y nOrientation en el mismo valor.

NOorientación: Especifica el ángulo entre la línea base de cada carácter y el eje X del dispositivo.

FnWeight: especifique el peso de la fuente entre 0 y 1000, como 400 para fuente estándar y 700 para fuente negra. Si el valor es 0, se utilizarán los pesos predeterminados.

Para facilitar la definición, se pueden utilizar los siguientes valores:

FW _ dont care:0; FW _ THIN100; FW _ EXTRALIGHT200; ;

FW_NORMAL:400;FW_Normal;400;FW_MEDIUM500;FW_SEMIBOLD600;FW_DEMIBOLD600;

FW_BOLD:700;FW_EXTRABOLD800;FW_ULTRABOLD800;FW_HEAVY900;FW_BLACK900.

FdwItalic: si se establece en TRUE, especifica la fuente en cursiva.

FdwUnderline: si se establece en TRUE, especifica palabras subrayadas.

FdwStrikeOut: si se establece en TRUE, tacha la fuente especificada.

FdwCharSet: especifica el juego de caracteres, los siguientes valores están predefinidos:

ANSI_CHARSET Juego de caracteres báltico; CHINESEBIG5_CHARSET default_character set;

Europa del este_ Juego de caracteres; GB 2312 _ CHARSET; GREEK _ CHARSETHANGUL _ CHARSETMAC _ CHARSETOEM _ CHARSET Juego de caracteres _ ruso; SHIFTJIS _ CHARSET

SYMBOL _ CHARSET Juego de caracteres turco.

Corea Windows: JOHAB _ charset;

Ventanas de Oriente Medio: hebreo _ juego de caracteres; árabe _ juego de caracteres

Ventanas de Tailandia: Tailandia _ juego de caracteres

El juego de caracteres especificado por OEM_CHARSET es el mismo que el de Operación relacionado con el sistema.

Puede utilizar el valor DEFAULT_CHARSET para permitir que el nombre y el tamaño de la fuente describan completamente la fuente lógica. Si el nombre de fuente especificado no existe, una fuente de cualquier juego de caracteres puede reemplazar la fuente especificada, por lo que DEFAULT_CHARSET debe usarse con cuidado para evitar resultados inesperados.

Existen fuentes para otros juegos de caracteres en el sistema operativo. Si una aplicación utiliza una fuente con un conjunto de caracteres desconocido, la aplicación no intentará traducir ni interpretar cadenas escritas en esa fuente.

Este parámetro es importante en el proceso de mapeo de fuentes. Para garantizar resultados consistentes, especifique un juego de caracteres especiales. Si se especifica un nombre de fuente en el parámetro lpszFace, determine si el valor fdwCharSet coincide con el conjunto de caracteres de fuente especificado por lpszFace.

FdwOutputPrecision: especifica la precisión de salida, es decir, el procedimiento de coincidencia entre la salida y la altura, el ancho, la posición de los caracteres, el desplazamiento, el espaciado entre caracteres y el tipo de carácter requeridos. Puede tomar uno de los siguientes valores:

OUT _ CHARACTER _ PRECIS no se utiliza.

OUT_DEFAULT_PRECIS: Especifica el estado de asignación de fuente predeterminado.

OUT_DEVICE_PRECIS: indica al asignador de fuentes que seleccione una fuente del dispositivo cuando hay varias fuentes en el sistema que utilizan la misma fuente y el mismo nombre.

OUT_OUTLINE_PRCIS: En Windows NT, este valor indica al asignador de fuentes que seleccione entre TrueType y otras fuentes basadas en bordes.

OUT_RASTER_PRECIS: Indica al asignador de fuentes que seleccione una fuente rasterizada cuando hay varias fuentes con el mismo nombre en el sistema.

OUT_STRING_PRECIS: este valor no lo utiliza el asignador de palabras, pero se utiliza como valor de retorno al enumerar las fuentes escaneadas.

OUT_STROKE_PRECIS: este valor no lo utiliza el asignador de fuentes en Windows NT, pero se utiliza como valor de retorno al enumerar fuentes TrueType, otras fuentes basadas en bordes y fuentes vectoriales.

Windows 95: el asignador de fuentes no utiliza este valor, pero se utiliza como valor de retorno al enumerar fuentes TrueType o fuentes vectoriales.

OUT_TT_ONLY_PRECIS: indica al asignador de fuentes que seleccione solo fuentes TrueType. Si las fuentes TrueType no están instaladas en el sistema, la asignación de fuentes volverá al estado predeterminado. ,

OUT_TT_PRECIS: indica al asignador de fuentes que seleccione fuentes TrueType cuando hay varias fuentes con el mismo nombre en el sistema.

Cuando el sistema operativo contiene varias fuentes con el mismo nombre que el nombre especificado, la aplicación puede usar los valores de out_device_precis, out_raster_precis y OUT_TT_PRECIS para controlar cómo el asignador de fuentes selecciona la fuente. Por ejemplo, si el sistema operativo contiene dos fuentes, rasterizada y TrueType, especificar OUT_TT_PRECIS hace que el asignador de fuentes seleccione TrueType. Al especificar OUT_TT_ONLY_PRECIS, el asignador de fuentes selecciona fuentes TrueType, aunque esto cambiará el nombre de la fuente TrueType.

fdwClipPrecision especifica la precisión de recorte, que define cómo recortar partes de caracteres que exceden el área de recorte. Puede tomar uno o más de los siguientes valores:

CLIP_DEFAULT_PRECIS: especifica el estado de recorte predeterminado. CLIP_CHARACTER_PRECIS: No utilizado.

CLIP_STROKE_PRECIS: no lo utiliza el asignador de fuentes, pero se utiliza como valor de retorno al enumerar fuentes rasterizadas, fuentes vectoriales o fuentes TrueType. En entornos Windows, para garantizar la compatibilidad, este valor siempre se devuelve al enumerar las fuentes.

CLIP_MASK: No utilizado. CLIP_EMBEDDED: esta bandera se debe utilizar para utilizar fuentes integradas de solo lectura.

CLIP_LH_ANGLES: Al utilizar este valor, la rotación de todas las fuentes depende de si el sistema de coordenadas es hacia la izquierda o hacia la derecha.

Si no se utiliza este valor, las fuentes del dispositivo siempre se rotan en sentido antihorario, pero la rotación de otras fuentes depende de la dirección del sistema de coordenadas. Para obtener más información sobre la orientación del sistema de coordenadas, consulte Orientación del parámetro.

CLIP_TT_ALWAYS: No utilizado.

FdwQuality: Se refiere a la calidad de salida, que define con qué cuidado GDI hace coincidir las propiedades lógicas de la fuente con las propiedades físicas reales de la fuente. Puede tomar uno de los siguientes valores:

DEFAULT_QUALITY: La apariencia de la fuente no es importante.

DRAFT_QUALITY: la apariencia de la fuente ocupa el segundo lugar después de la importancia de usar PROOF_QUALITY. Para las fuentes rasterizadas GDI, la escala está activa, lo que significa que hay muchos tamaños de fuente para elegir, pero es posible que la calidad no sea alta. Si se desea, se pueden utilizar juntas negrita, cursiva, subrayado y tachado.

PROOF_QUALITY: La calidad de los caracteres es más importante que las propiedades de la fuente que coincidan exactamente con la fuente lógica. Para las fuentes escaneadas GDI, la escala está activa y se elige el tamaño más cercano.

Aunque los tamaños de fuente seleccionados no coinciden exactamente cuando se usa PROOF_QUALITY, la calidad de las fuentes es alta y no hay distorsión en la apariencia. Si se desea, se pueden utilizar juntas negrita, cursiva, subrayado y tachado.

FdwPitchAndFamily: especifica el espaciado de la fuente y la familia de fuentes. Los dos dígitos siguientes especifican el espaciado de los caracteres de la fuente, que puede tomar uno de los siguientes valores:

Default_pitch; tono

La serie de fuentes especificadas de cuatro dígitos de gama alta puede tomar uno de los siguientes valores:

FF_DECORATIVE: la fuente es novedosa, como el inglés antiguo. FF_DONTCARE: No me importa o no lo sé.

FF_MDERN: Fuente de ancho de trazo fijo, con o sin serifas. Como Pica, Elite y Courier New.

Ancho de trazo variable y fuentes serif. Como MS Serif.

FF_SCRIPT: Fuente diseñada para que parezca escrita a mano. Como escritura a mano y cursiva.

FF_SWISS: Fuente con ancho de trazo variable y sin barras. Como MS Sans Serif.