Caixa de diálogo de fonte
A caixa de diálogo Fonte permite que o usuário escolha atributos para uma fonte lógica, como família de fontes e estilo de fonte associado, tamanho do ponto, efeitos (sublinhado, strikeout e cor do texto) e um script (ou conjunto de caracteres).
Você cria e exibe uma caixa de diálogo Fonte inicializando uma estrutura CHOOSEFONT e passando a estrutura para a função ChooseFont .
A captura de tela a seguir mostra uma caixa de diálogo Fonte típica.
Se o usuário clicar no botão OK , a função ChooseFont retornará TRUE e definirá as informações sobre a seleção do usuário na estrutura CHOOSEFONT .
Se o usuário cancelar a caixa de diálogo Fonte ou ocorrer um erro, ChooseFont retornará FALSE e o conteúdo da estrutura LOGFONT não será definido. Você pode determinar a causa de um erro usando a função CommDlgExtendedError para recuperar o valor de erro estendido.
Os tópicos a seguir são discutidos nesta seção.
- Sinalizadores de inicialização da caixa de diálogo Fonte
- Personalizando a caixa de diálogo Fonte em versões anteriores do Windows
- Personalizando a caixa de diálogo Fonte no Windows 7
Sinalizadores de inicialização da caixa de diálogo Fonte
Antes de chamar ChooseFont, o membro Flags da estrutura CHOOSEFONT deve especificar CF_SCREENFONTS, CF_PRINTERFONTS ou CF_BOTH, para indicar se a caixa de diálogo deve listar fontes de tela, fontes de impressora ou ambas. Se você especificar CF_PRINTERFONTS ou CF_BOTH, o membro hDC da estrutura CHOOSEFONT deverá especificar um identificador para um contexto de dispositivo para a impressora.
Se o sinalizador CF_PRINTERFONTS ou CF_BOTH estiver definido, o rótulo de descrição do tipo de fonte aparecerá na parte inferior da caixa de diálogo Fonte .
A partir do Windows 7, os sinalizadores CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTH e CF_WYSIWYG não são mais usados pela função ChooseFont para enumeração de fonte. Eles estão obsoletos no Windows 7. No entanto, o sinalizador CF_PRINTERFONTS mantém uma função: para exibir o rótulo de descrição do tipo de fonte na parte inferior da caixa de diálogo Fonte .
Você pode usar o membro Flags para habilitar ou desabilitar alguns dos controles da caixa de diálogo Fonte e pode usar o membro Flags em conjunto com outros membros CHOOSEFONT para controlar os valores iniciais de alguns controles.
Para exibir os controles que permitem que o usuário selecione as opções de strikeout, sublinhado e cor:
- Defina o sinalizador CF_EFFECTS . Você pode usar o membro rgbColors da estrutura CHOOSEFONT para especificar uma cor de fonte inicial.
Para especificar os valores iniciais para os controles da caixa de diálogo Fonte, Estilo da Fonte, Tamanho, Strikeout e Sublinhado:
- Para especificar os valores iniciais para os controles da caixa de diálogo Fonte, Estilo da Fonte, Tamanho, Strikeout e Sublinhado:
- Defina o sinalizador CF_INITTOLOGFONTSTRUCT no membro Flags , juntamente com os membros da estrutura LOGFONT apontada pelo lpLogFont, para especificar os valores iniciais para os atributos de fonte.
- Você também pode usar os sinalizadores CF_NOFACESEL, CF_NOSTYLESEL e CF_NOSIZESEL para impedir que a caixa de diálogo Fonte exiba valores iniciais para os controles correspondentes. Isso é útil quando você está trabalhando com uma seleção de texto que tem mais de uma face de tipo, estilo ou tamanho de ponto. Esses valores também serão definidos em Sinalizadores quando ChooseFont retornar, se o usuário não tiver selecionado um valor correspondente.
Para inicializar o controle Estilo de Fonte para um nome de estilo especificado
- Defina o sinalizador CF_USESTYLE e use o membro lpszStyle para especificar o nome do estilo.
Observação
Para globalizar seu aplicativo, especifique o estilo usando os membros lfWeight e lfItalic da estrutura LOGFONT apontada por lpLogFont. O nome do estilo pode mudar dependendo do idioma da interface do usuário do sistema.
Para exibir o botão Aplicar
- Defina o sinalizador CF_APPLY e forneça um procedimento de gancho para processar mensagens WM_COMMAND para o botão Aplicar . O procedimento de gancho pode enviar a mensagem WM_CHOOSEFONT_GETLOGFONT para a caixa de diálogo para recuperar o endereço da estrutura LOGFONT que contém as seleções atuais para a fonte.
Para exibir o botão Ajuda
- Defina o sinalizador CF_SHOWHELP . O membro hwndOwner deve identificar a janela para receber a mensagem registrada HELPMSGSTRING quando o usuário clica no botão Ajuda .
Para restringir as fontes exibidas na caixa de diálogo
- Defina qualquer combinação dos sinalizadores CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLY e CF_WYSIWYG . Você também pode restringir os estilos disponíveis que a caixa de diálogo exibe para algumas fontes usando o valor CF_NOSIMULATIONS .
A partir do Windows 7, a lista de fontes exibidas na caixa de diálogo é restrita com base nas fontes mostradas pelo usuário. Para remover a restrição, defina o sinalizador CF_INACTIVEFONTS .
Para restringir os nomes, estilos e tamanhos de ponto da face de tipo que o usuário pode especificar
- Defina o sinalizador CF_FORCEFONTEXIST para restringir o usuário a especificar apenas nomes de face de tipo válidos, estilos e tamanhos de ponto listados na caixa de diálogo.
- Defina o sinalizador CF_LIMITSIZE para restringir o usuário a especificar tamanhos de ponto no intervalo especificado pelos membros nSizeMin e nSizeMax .
Para restringir ou desabilitar a caixa de combinação Scripts
- Defina o sinalizador CF_NOSCRIPTSEL para desabilitar a caixa de combinação Scripts ou defina o sinalizador CF_SELECTSCRIPT para restringir as seleções na caixa de combinação Scripts a um conjunto de caracteres especificado.
Personalizando a caixa de diálogo Fonte em versões anteriores do Windows
Você pode fornecer um modelo personalizado para a caixa de diálogo Fonte , por exemplo, se quiser incluir controles adicionais exclusivos para seu aplicativo. A função ChooseFont usa seu modelo personalizado no lugar do modelo padrão.
Para fornecer um modelo personalizado para a caixa de diálogo Fonte
- Crie o modelo personalizado modificando o modelo padrão especificado no arquivo Font.dlg. Os identificadores de controle usados no modelo de caixa de diálogo Fonte padrão são definidos no arquivo Dlgs.h.
- Use a estrutura CHOOSEFONT para habilitar o modelo da seguinte maneira:
- Se o modelo personalizado for um recurso em um aplicativo ou biblioteca de vínculo dinâmico, defina o sinalizador CF_ENABLETEMPLATE no membro Flags . Use os membros hInstance e lpTemplateName da estrutura para identificar o módulo e o nome do recurso.
- Se o modelo personalizado já estiver na memória, defina o sinalizador CF_ENABLETEMPLATEHANDLE . Use o membro hInstance para identificar o objeto de memória que contém o modelo.
Você pode fornecer um procedimento de gancho CFHookProc para a caixa de diálogo Fonte . O procedimento de gancho pode processar mensagens enviadas para a caixa de diálogo e enviar mensagens para a caixa de diálogo. Se você usar um modelo personalizado para definir controles adicionais, deverá fornecer um procedimento de gancho para processar a entrada para seus controles.
Para habilitar um procedimento de gancho para a caixa de diálogo Fonte
- Defina o sinalizador CF_ENABLEHOOK no membro Flags da estrutura CHOOSEFONT .
- Especifique o endereço do procedimento de gancho no membro lpfnHook .
Depois de processar a mensagem de WM_INITDIALOG , o procedimento da caixa de diálogo envia uma mensagem WM_INITDIALOG para o procedimento de gancho. O parâmetro lParam dessa mensagem é um ponteiro para a estrutura CHOOSEFONT usada para inicializar a caixa de diálogo.
O procedimento de gancho pode enviar as mensagens WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONT e WM_CHOOSEFONT_SETFLAGS para a caixa de diálogo para obter e definir os valores e sinalizadores atuais da caixa de diálogo.
Personalizando a caixa de diálogo Fonte no Windows 7
A captura de tela a seguir mostra uma caixa de diálogo Fonte típica no Windows 7.
Em versões anteriores do Windows, o arquivo de modelo font.dlg contém um modelo ChooseFont padrão. O arquivo de modelo font.dlg no Windows 7 contém dois modelos padrão: o modelo padrão de versões anteriores do Windows e o novo modelo ChooseFont do Windows 7. Portanto, ao personalizar a caixa de diálogo Fonte no Windows 7, você deve considerar os seguintes problemas.
Use o novo modelo ao criar modelos personalizados para aplicativos executados no Windows 7. Este novo modelo contém um controle de link que o usuário pode clicar para iniciar a janela Fontes Painel de Controle, conforme mostrado na captura de tela a seguir.
Para usar esse controle de link, seu aplicativo de chamada deve usar o COMCTL32.DLL versão 6 ou posterior. Caso contrário, a função ChooseFont retornará um erro quando tentar criar o controle de link em seu modelo personalizado. Para determinar se esse controle está habilitado, compile seu aplicativo de chamada no COMCTL32.DLL versão 6.0. Para obter mais informações, consulte Habilitando estilos visuais com controles comuns.
Se o aplicativo usar COMCTL32.DLL versão 5.0 ou anterior, você deverá fazer o seguinte ao criar um modelo personalizado:
Especifique o controle como um PUSHBUTTON. O controle usado para iniciar o Painel de Controle fontes aparecerá como um botão em vez de como um link.
Substitua o seguinte texto em font.dlg:
CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink", WS_TABSTOP, 7, 199, 227, 9
com o seguinte texto:
PUSHBUTTON "S&how more fonts", IDC_MANAGE_LINK, 7, 199, 74, 14 , WS_TABSTOP
Para garantir que seu aplicativo use um modelo personalizado, você deve especificar um modelo personalizado com o sinalizador CF_ENABLETEMPLATE , criar um modelo personalizado com base no modelo ChooseFont do Windows 7 e, opcionalmente, habilitar um procedimento de gancho.
Se você habilitar um procedimento de gancho sem criar um modelo personalizado, o modelo ChooseFont padrão para versões anteriores do Windows será carregado.
Observação
Você deve especificar o tipo de controle CONTROL ou PUSHBUTTON em seu novo modelo, dependendo da versão de COMMCTL.DLL em que seu aplicativo é compilado. Observe também que recursos específicos do Windows 7, como a exibição WYSIWYG de listas de fontes e famílias estendidas, não estão disponíveis quando seus aplicativos são executados em versões anteriores do sistema operacional Windows.