Caixa de diálogo 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 de texto) e um script (ou conjunto de caracteres).
Crie e exiba uma caixa de diálogo Fonte inicializando uma estruturaCHOOSEFONT 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 estruturaCHOOSEFONT.
Se o usuário cancelar a caixa de diálogo Fonte ou ocorrer um erro, ChooseFont retornará FALSE e o conteúdo da estrutura deLOGFONT 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 da 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 Flags membro da estruturaCHOOSEFONT deve especificar CF_SCREENFONTS, CF_PRINTERFONTSou 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 hDC membro 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 será exibido na parte inferior da caixa de diálogo fonte.
A partir do Windows 7, os sinalizadores CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTHe CF_WYSIWYG não são mais usados pela função ChooseFont para enumeração de fonte. Eles são obsoletos no Windows 7. No entanto, o sinalizador CF_PRINTERFONTS mantém uma função: exibir o rótulo de descrição do tipo de fonte na parte inferior da caixa de diálogo fonte.
Você pode usar o Flags membro para habilitar ou desabilitar alguns dos controles da caixa de diálogo fonte e usar o membro sinalizadores em conjunto com outros membrosCHOOSEFONTpara controlar os valores iniciais de alguns controles.
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 rgbColors membro da estruturaCHOOSEFONT para especificar uma cor de fonte inicial.
Para especificar os valores iniciais para os controles da caixa de diálogo Fonte, Estilo de 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 sinalizadores do, juntamente com os membros da estrutura deLOGFONT que é apontado pelo lpLogFont, para especificar os valores iniciais para os atributos de fonte.
- Você também pode usar os sinalizadores CF_NOFACESEL, CF_NOSTYLESELe 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 no Flags quando ChooseFont retornar, se o usuário não tiver selecionado um valor correspondente.
Para inicializar o controle Estilo de Fonte em um nome de estilo especificado
- Defina o sinalizador CF_USESTYLE e use o membro lpszStyle para especificar o nome do estilo.
Nota
Para globalizar seu aplicativo, especifique o estilo usando o lfWeight e membros lfItalic da estrutura deLOGFONT que é apontada por lpLogFont. O nome do estilo pode ser alterado dependendo da linguagem de 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 estruturaLOGFONT que contém as seleções atuais da fonte.
Exibir o botão Ajuda
- Defina o sinalizador CF_SHOWHELP. O membro do hwndOwner deve identificar a janela para receber a mensagem HELPMSGSTRING registrada 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_SCALABLEONLYe 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 de tipo, estilos e tamanhos de ponto que o usuário pode especificar
- Defina o sinalizador CF_FORCEFONTEXIST para restringir o usuário a especificar apenas nomes, estilos e tamanhos de tipo válidos listados na caixa de diálogo.
- Defina o sinalizador CF_LIMITSIZE para restringir o usuário à especificação de tamanhos de ponto no intervalo especificado pelos membros nSizeMin e nSizeMax.
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 para 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 diálogo Fonte padrão são definidos no arquivo Dlgs.h.
- Use a estruturaCHOOSEFONT para habilitar o modelo da seguinte maneira:
- Se o modelo personalizado for um recurso em um aplicativo ou biblioteca de link dinâmico, defina o sinalizador CF_ENABLETEMPLATE no membro sinalizadores do. 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 de 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.
Habilitar um procedimento de gancho para a caixa de diálogo Fonte
- Defina o sinalizador CF_ENABLEHOOK no membro sinalizadores da estruturaCHOOSEFONT.
- 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 estruturaCHOOSEFONT usada para inicializar a caixa de diálogo.
O procedimento de gancho pode enviar as mensagens WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONTe 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 painel de controle de fontes, 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 ao 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 Habilitar 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 de fontes será exibido como um botão e não como um link.
Substitua o seguinte texto no 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.
Nota
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 compila. 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.