Pergunta

Eu tenho um aplicativo VCL Borland C ++ Builder (então ainda não estou trabalhando com o Unicode), quero fornecer uma simples tradução do texto da legenda dos controles para o russo no tempo de execução.

Eu posso usar facilmente Enumchildwindows Para obter a legenda inglesa, procure a tradução e substitua o texto da legenda usando SetWindowText. Isso funciona bem para minhas traduções da Europa Ocidental, onde não preciso me preocupar com a fonte. Mas não tenho certeza de como a versão russa do Windows e, em seguida, o VCL lida com conjuntos de caracteres cirílicos de 8 bits.

Atualmente, todos os controles VCL têm as configurações da fonte:

Charset=DEFAULT_CHARSET
name=MS Sans Serif

Estou correto ao assumir que, quando meu programa é executado sob uma versão russa do Windows, o conjunto de personagens será cirílico com o Default_charset Configurando, então não precisarei alterar as configurações da fonte em todos os meus controles?

Se eu tiver que mudar a fonte (no tempo de execução), a função da API do Windows SendMessage (hwnd, wm_setfont, (wparam) hfont, true) trabalhar com controles VCL? Eu tentei usar o createfont () e SendMessage (.. wm_setfont ..) com russian_charset e um rosto de fonte cirílica. Isso não parece ter nenhum efeito, mantém a fonte que foi definida para o controle no formulário no tempo de design (mesmo Ansi_charset e uma face de fonte instalada pelo Windows padrão não afeta a fonte dos controles), por isso estou procurando Confirmação de que não terei que alterar a fonte dos controles, ou então me diga algum método VCL para definir todas as configurações de fonte dos controles no tempo de execução.

Nenhuma solução correta

Outras dicas

Não há necessidade de reinventar a bicicleta. Por que você não usa ferramentas de ambiente de tradução de integração que são fornecidas com o Borland C ++ Builder? Existe um assistente que o ajudará nas traduções e fará um arquivo de recurso especial que conterá a tradução de todas as seqüências de texto em seu aplicativo. Em seguida, o programa verificará os arquivos de recursos do sistema e os recursos de idioma disponíveis na inicialização e usarão automaticamente o idioma apropriado. Verifique o sistema C ++ Builder Ajuda com o índice - "Ambiente de tradução integrado (ITE)" para uma descrição mais detalhada do processo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top