Compartir a través de


Cuadro de diálogo Fuente

El cuadro de diálogo Fuente permite al usuario elegir atributos para una fuente lógica, como la familia de fuentes y el estilo de fuente asociado, el tamaño de punto, los efectos (subrayado, tachado y color de texto) y un script (o juego de caracteres).

Para crear y mostrar un cuadro de diálogo Fuente , inicialice una estructura CHOOSEFONT y pase la estructura a la función ChooseFont .

En la captura de pantalla siguiente se muestra un cuadro de diálogo Fuente típico.

captura de pantalla que muestra el cuadro de diálogo fuente

Si el usuario hace clic en el botón Aceptar , la función ChooseFont devuelve TRUE y establece la información sobre la selección del usuario en la estructura CHOOSEFONT .

Si el usuario cancela el cuadro de diálogo Fuente o se produce un error, ChooseFont devuelve FALSE y el contenido de la estructura LOGFONT no está definido. Puede determinar la causa de un error mediante la función CommDlgExtendedError para recuperar el valor de error extendido.

En esta sección se describen los temas siguientes.

Marcas de inicialización del cuadro de diálogo Fuente

Antes de llamar a ChooseFont, el miembro Flags de la estructura CHOOSEFONT debe especificar CF_SCREENFONTS, CF_PRINTERFONTS o CF_BOTH, para indicar si el cuadro de diálogo debe mostrar fuentes de pantalla, fuentes de impresora o ambas. Si especifica CF_PRINTERFONTS o CF_BOTH, el miembro hDC de la estructura CHOOSEFONT debe especificar un identificador para un contexto de dispositivo para la impresora.

Si se establece la marca CF_PRINTERFONTS o CF_BOTH , la etiqueta de descripción del tipo de fuente aparece en la parte inferior del cuadro de diálogo Fuente .

A partir de Windows 7, las marcas CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTH y CF_WYSIWYG ya no las usa la función ChooseFont para la enumeración de fuentes. Están obsoletos en Windows 7. Sin embargo, la marca CF_PRINTERFONTS conserva una función: para mostrar la etiqueta de descripción del tipo de fuente en la parte inferior del cuadro de diálogo Fuente .

Puede usar el miembro Flags para habilitar o deshabilitar algunos de los controles del cuadro de diálogo Fuente , y puede usar el miembro Flags junto con otros miembros CHOOSEFONT para controlar los valores iniciales de algunos controles.

Para mostrar los controles que permiten al usuario seleccionar opciones de tachado, subrayado y color:

  • Establezca la marca CF_EFFECTS . Puede usar el miembro rgbColors de la estructura CHOOSEFONT para especificar un color de fuente inicial.

Para especificar los valores iniciales para los controles de cuadro de diálogo Font, Font Style, Size, Strikeout y Underline:

  1. Para especificar los valores iniciales para los controles de cuadro de diálogo Font, Font Style, Size, Strikeout y Underline:
  2. Establezca la marca CF_INITTOLOGFONTSTRUCT en el miembro Flags , junto con los miembros de la estructura LOGFONT a la que apunta lpLogFont, para especificar los valores iniciales de los atributos de fuente.
  3. También puede usar las marcas CF_NOFACESEL, CF_NOSTYLESEL y CF_NOSIZESEL para evitar que el cuadro de diálogo Fuente muestre los valores iniciales de los controles correspondientes. Esto resulta útil cuando se trabaja con una selección de texto que tiene más de un tipo de letra, estilo o tamaño de punto. Estos valores también se establecerán en Marcas cuando ChooseFont devuelva, si el usuario no seleccionó un valor correspondiente.

Para inicializar el control Estilo de fuente en un nombre de estilo especificado

  • Establezca la marca CF_USESTYLE y use el miembro lpszStyle para especificar el nombre del estilo.

Nota

Para globalizar la aplicación, especifique el estilo mediante los miembros lfWeight y lfItalic de la estructura LOGFONT a la que apunta lpLogFont. El nombre del estilo puede cambiar en función del idioma de la interfaz de usuario del sistema.

 

Para mostrar el botón Aplicar

  • Establezca la marca CF_APPLY y proporcione un procedimiento de enlace para procesar WM_COMMAND mensajes para el botón Aplicar . El procedimiento de enlace puede enviar el mensaje WM_CHOOSEFONT_GETLOGFONT al cuadro de diálogo para recuperar la dirección de la estructura LOGFONT que contiene las selecciones actuales de la fuente.

Para mostrar el botón Ayuda

  • Establezca la marca CF_SHOWHELP . El miembro hwndOwner debe identificar la ventana para recibir el mensaje registrado HELPMSGSTRING cuando el usuario hace clic en el botón Ayuda .

Para restringir las fuentes que se muestran en el cuadro de diálogo

  • Establezca cualquier combinación de las marcas de CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLY y CF_WYSIWYG . También puede restringir los estilos disponibles que muestra el cuadro de diálogo para algunas fuentes mediante el valor de CF_NOSIMULATIONS .

A partir de Windows 7, la lista de fuentes que se muestran en el cuadro de diálogo está restringida en función de las fuentes mostradas por el usuario. Para quitar la restricción, establezca la marca CF_INACTIVEFONTS .

Para restringir los nombres, estilos y tamaños de punto que el usuario puede especificar

  1. Establezca la marca CF_FORCEFONTEXIST para restringir al usuario a especificar solo nombres, estilos y tamaños de punto válidos que se enumeran en el cuadro de diálogo.
  2. Establezca la marca CF_LIMITSIZE para restringir al usuario a especificar tamaños de punto en el intervalo especificado por los miembros nSizeMin y nSizeMax .

Para restringir o deshabilitar el cuadro combinado Scripts

  • Establezca la marca CF_NOSCRIPTSEL para deshabilitar el cuadro combinado Scripts o establezca la marca CF_SELECTSCRIPT para restringir las selecciones del cuadro combinado Scripts a un juego de caracteres especificado.

Personalización del cuadro de diálogo Fuente en versiones anteriores de Windows

Puede proporcionar una plantilla personalizada para el cuadro de diálogo Fuente , por ejemplo, si desea incluir controles adicionales que sean exclusivos de la aplicación. La función ChooseFont usa la plantilla personalizada en lugar de la plantilla predeterminada.

Para proporcionar una plantilla personalizada para el cuadro de diálogo Fuente

  1. Cree la plantilla personalizada modificando la plantilla predeterminada especificada en el archivo Font.dlg. Los identificadores de control usados en la plantilla de diálogo Fuente predeterminada se definen en el archivo Dlgs.h.
  2. Use la estructura CHOOSEFONT para habilitar la plantilla de la siguiente manera:
    • Si la plantilla personalizada es un recurso de una aplicación o biblioteca de vínculos dinámicos, establezca la marca de CF_ENABLETEMPLATE en el miembro Flags . Use los miembros hInstance y lpTemplateName de la estructura para identificar el nombre del módulo y del recurso.
    • Si la plantilla personalizada ya está en memoria, establezca la marca CF_ENABLETEMPLATEHANDLE . Use el miembro hInstance para identificar el objeto de memoria que contiene la plantilla.

Puede proporcionar un procedimiento de enlace CFHookProc para el cuadro de diálogo Fuente . El procedimiento de enlace puede procesar los mensajes enviados al cuadro de diálogo y enviar mensajes al cuadro de diálogo. Si usa una plantilla personalizada para definir controles adicionales, debe proporcionar un procedimiento de enlace para procesar la entrada de los controles.

Para habilitar un procedimiento de enlace para el cuadro de diálogo Fuente

  1. Establezca la marca CF_ENABLEHOOK en el miembro Flags de la estructura CHOOSEFONT .
  2. Especifique la dirección del procedimiento de enlace en el miembro lpfnHook .

Después de procesar el mensaje WM_INITDIALOG , el procedimiento del cuadro de diálogo envía un mensaje WM_INITDIALOG al procedimiento de enlace. El parámetro lParam de este mensaje es un puntero a la estructura CHOOSEFONT que se usa para inicializar el cuadro de diálogo.

El procedimiento de enlace puede enviar los mensajes WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONT y WM_CHOOSEFONT_SETFLAGS al cuadro de diálogo para obtener y establecer los valores y marcas actuales del cuadro de diálogo.

Personalizar el cuadro de diálogo Fuente en Windows 7

En la captura de pantalla siguiente se muestra un cuadro de diálogo Fuente típico en Windows 7.

captura de pantalla que muestra el cuadro de marcado de fuente

En versiones anteriores de Windows, el archivo de plantilla font.dlg contiene una plantilla ChooseFont predeterminada. El archivo de plantilla font.dlg en Windows 7 contiene dos plantillas predeterminadas: la plantilla predeterminada de versiones anteriores de Windows y la nueva plantilla ChooseFont de Windows 7. Por lo tanto, al personalizar el cuadro de diálogo Fuente en Windows 7, debe tener en cuenta los siguientes problemas.

  1. Use la nueva plantilla al crear plantillas personalizadas para aplicaciones que se ejecutan en Windows 7. Esta nueva plantilla contiene un control de vínculo que el usuario puede hacer clic para iniciar la ventana Fuentes Panel de control, como se muestra en la siguiente captura de pantalla.

    captura de pantalla que muestra el panel de control de fuente en windows 7

  2. Para usar este control de vínculo, la aplicación que llama debe usar el COMCTL32.DLL versión 6 o posterior. De lo contrario, la función ChooseFont devuelve un error cuando intenta crear el control de vínculo en la plantilla personalizada. Para determinar si este control está habilitado, compile la aplicación que realiza la llamada en COMCTL32.DLL versión 6.0. Para obtener más información, vea Habilitación de estilos visuales con controles comunes.

  3. Si la aplicación usa COMCTL32.DLL versión 5.0 o anterior, debe hacer lo siguiente al crear una plantilla personalizada:

    • Especifique el control como un PUSHBUTTON. El control usado para iniciar el Panel de control Fuentes aparecerá como un botón en lugar de como un vínculo.

    • Reemplace el texto siguiente en font.dlg:

      CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink", WS_TABSTOP, 7, 199, 227, 9

      con el texto siguiente:

      PUSHBUTTON "S&how more fonts", IDC_MANAGE_LINK, 7, 199, 74, 14 , WS_TABSTOP

    • Para asegurarse de que la aplicación usa una plantilla personalizada, debe especificar una plantilla personalizada con la marca CF_ENABLETEMPLATE , crear una plantilla personalizada basada en la plantilla ChooseFont de Windows 7 y, a continuación, habilitar opcionalmente un procedimiento de enlace.

      Si habilita un procedimiento de enlace sin crear una plantilla personalizada, se cargará la plantilla ChooseFont predeterminada para versiones anteriores de Windows.

Nota

Debe especificar el tipo de control CONTROL o PUSHBUTTON en la nueva plantilla, según la versión de COMMCTL.DLL en la que se compile la aplicación. Tenga en cuenta también que las características específicas de Windows 7, como la presentación WYSIWYG de listas de fuentes y familias extendidas, no están disponibles cuando las aplicaciones se ejecutan en versiones anteriores del sistema operativo Windows.