Compartilhar via


TN057: Localização dos componentes do MFC

Observação:

A seguinte nota técnica não foi atualizada desde que foi incluída pela primeira vez na documentação online.sistema autônomo resultado, alguns procedimentos e tópicos podem estar desatualizado ou incorreto.Para obter informações mais recentes, é recomendável que você procurar o tópico de interesse no índice de documentação online.

Esta nota descreve alguns dos designs e procedimentos que podem ser usados para localizar seu componente, se ele controlar um aplicativo ou uma OLE ou uma DLL que usa o MFC.

Visão Geral

Na verdade há dois problemas para resolver quando a localização de um componente que usa o MFC.Primeiro, você precisa localizar seus próprios recursos — cadeias de caracteres, caixas de diálogo e outros recursos que são específicos para seu componente.A maioria dos componentes criados usando o MFC também incluem e usar inúmeros recursos que são definidos pelo MFC.Você deve fornecer recursos localizados do MFC também.Felizmente, vários idiomas já são fornecidos pelo MFC propriamente dito.

Além disso, seu componente deve estar preparado para serem executados em seu ambiente de destino (ambiente europeu ou ativado por DBCS).Na maior parte, isso depende de seu aplicativo tratando corretamente caracteres com o conjunto de bit alta e manipulação de seqüências de caracteres de byte duplo.MFC é ativado, por padrão, para dois desses ambientes, que é possível ter um único binário mundial que é usado em todas as plataformas com recursos diferentes apenas na tomada durante a instalação time.

Localização de recursos do seu componente

Localização de seu aplicativo ou DLL deve envolver simplesmente substituindo os recursos com recursos que correspondem ao linguagem de destino.Para seus próprios recursos, isso é relativamente simples: edição o s recurso no recurso editor e criar seu aplicativo.Se seu código é gravado corretamente haverá sem seqüências de caracteres ou o texto que você deseja localizar embutido em código no código fonte C++ – localização de todos os pode ser feita, simplesmente modificando recursos.Na verdade, você pode implementar seu componente de modo que todos os fornecer uma versão localizada não envolve até mesmo uma compilação do código original.Este é mais complexa, mas vale a pena-lo e é o mecanismo escolhido para MFC propriamente dito.Também é possível localizar um aplicativo carregando o arquivo EXE ou DLL para o recurso editor e editar s recurso diretamente.Embora possível, é requer a reaplicação das alterações toda vez que você compilação uma nova versão do seu aplicativo.

Uma maneira para evitar que é localizar todos os recursos em uma DLL separada, às vezes chamada de uma DLL satélite.Essa DLL é carregada, em seguida, dinamicamente no tempo de execução e os recursos são carregados a partir dessa DLL em vez do módulo principal com todo seu código.MFC oferece suporte diretamente a essa abordagem.Considere um aplicativo denominado MEUAPL.exe; ela pode ter todos os seus recursos localizados em uma DLL chamada MYRES.DLL.Do aplicativo InitInstance ele teria faça o seguinte para carregar a DLL e fazer com que a MFC carregar recursos a partir desse local:

CMyApp::InitInstance()
{
   // one of the first things in the init code
   HINSTANCE hInst = LoadLibrary("myres.dll");
   if (hInst != NULL)
      AfxSetResourceHandle(hInst);

   // other initialization code would follow
   .
   .
   .
}

Daí em seguida diante, MFC irá carregar recursos dessa DLL em vez do Meu_apl.exe.Todos os recursos, no entanto, devem estar presentes em que a DLL; MFC não irá procurar a instância do aplicativo em busca de um determinado recurso.Esta técnica aplica-se igualmente bem para regular DLLs, bem sistema autônomo controles OLE.Seu programa de instalação deve copiar a versão apropriada de MYRES.DLL dependendo na localidade qual recurso gostaria que o usuário.

É relativamente fácil criar um recurso somente a DLL.Criar um projeto DLL, adicionar o arquivo .RC a ele e adicionar os recursos necessários.Se você tiver um projeto existente que não usa essa técnica, você pode copiar os recursos desse projeto.Depois de adicionar o arquivo de recurso para o projeto, você está quase pronto para compilação o projeto.A única coisa que você precisa fazer é conjunto o vinculador opções para incluir / NOENTRY.Isso informa o vinculador que a DLL não tem nenhum ponto de entrada – como ela tem nenhum código, ele tem nenhum ponto de entrada.

Observação:

O recurso editor no Visual C++ 4.0 e posterior oferece suporte a vários idiomas por arquivo .RC.Isso pode facilitar muito gerenciar sua localização em um único projeto.O s recurso para cada linguagem são controladas por diretivas de pré-processador geradas pelo recurso editor.

Usar o MFC fornecido recursos localizados

Qualquer aplicativo MFC que você criar reutiliza duas coisas do MFC: o código e recursos.Ou seja, o MFC tem várias mensagens de erro, caixas de diálogo internas e outros recursos usados por classes MFC.Para localizar seu aplicativo completamente, você precisa localizar não apenas recursos de seu aplicativo, mas também os recursos que vêm diretamente de MFC.MFC fornece um número de idiomas diferentes arquivos de recursos automaticamente, para que se o linguagem que estão direcionando é um dos idiomas que MFC já oferece suporte, precisará apenas certifique-se de que usar esses recursos localizados.

sistema autônomo da redação deste artigo, o MFC oferece suporte para chinês, alemão, espanhol, francês, italiano, japonês e coreano.Os arquivos que contêm essas versões localizadas estão sendo o MFC\INCLUDE\L.* ('L' significa para localizadas) diretórios.Os arquivos alemão estiverem em MFC\INCLUDE\L.DEU, por exemplo.Para fazer com que seu aplicativo para usar esses arquivos RC, em vez dos arquivos localizados em MFC\INCLUDE, adicione um /IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU a linha de comando do seu RC (isso é apenas um exemplo; seria preciso substituir sua localidade de escolha bem sistema autônomo o diretório no qual você instalou o Visual C++).

As instruções acima funcionará se seu aplicativo vincula estaticamente MFC.A maioria dos aplicativos vincular dinamicamente (porque esse é o padrão AppWizard).Nesse cenário, não apenas o código está dinamicamente vinculada – assim são os recursos.sistema autônomo resultado, você pode localizar sistema autônomo recursos em seu aplicativo, mas sistema autônomo recursos de implementação do MFC serão ainda ser carregados do MFC7x.DLL (ou uma versão posterior) ou de MFC7xLOC.DLL se ele existir.Você pode abordar de dois diferentes ângulos.

A abordagem mais complexa é remeter um MFC7xLOC.DLLs localizadas (sistema autônomo MFC7xDEU para alemão, MFC7xESP.DLL para espanhol, etc) ou uma versão mais recente e instale MFC7xLOC.DLL apropriado no diretório do sistema quando o usuário instala o aplicativo.Isso pode ser muito complexo para o desenvolvedor e o usuário participante e sistema autônomo tal, não é recomendado.See Observação técnica 56 para obter mais informações sobre essa técnica e suas limitações.

A abordagem mais simples e mais segura é incluir os recursos do MFC localizados no seu aplicativo ou DLL propriamente dito (ou sua DLL satélite) se você estiver usando um.Isso evita os problemas de instalação MFC7xLOC.DLL corretamente.Para fazer isso, siga as mesmas instruções para o caso estático fornecido acima (definir linha de comando RC corretamente para apontar para os recursos localizados), exceto que você também deve remover o /D_AFXDLL definir que foi adicionada por AppWizard. Quando /D_AFXDLL é definido, AFXRES.H (e outros arquivos do MFC RC) não realmente definem quaisquer recursos (porque eles serão ser extraídos de MFC DLLs em vez disso).

Consulte também

Outros recursos

Notas técnicas por número

Notas técnicas por categoria