Como criar DLLs de recursos localizadas para aplicação MFC

Traduções de Artigos Traduções de Artigos
Artigo: 198846 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

DLL de recurso são uma forma eficaz para utilizar recursos em diferentes idiomas. As aplicações podem fornecer uma única DLL que tiver localizado a recursos através do respectivo programa de configuração. Alterar para outro idioma é uma questão simples de utilizar a DLL correcta.

As informações abaixo descreve como efectuar um recurso localizado DLL com o Visual C++ 5.0.

Mais Informação

Este artigo descreve um método fácil e geral para gerar uma aplicação e DLLs capazes de suportar vários idiomas de recursos. Utilizando este método, terá de todos os recursos num ficheiro RC, facilitando bastante ver quais os recursos que tenha implementado.

  1. Criar uma aplicação de MFC AppWizard predefinida (denominada MyApp neste exemplo) e especificar Inglês (e.u.a.) para o idioma de recursos. Biblioteca MFC de utilização como uma DLL partilhada .
  2. Inserir uma predefinição MFC AppWizard DLL como um projecto de nível superior ( ResourceDll neste exemplo) e seleccione o DLL de extensão de MFC (utilizando DLL MFC partilhado) para o tipo de DLL. Porque não é criado nenhum ficheiro .lib para a DLL, um projecto de nível superior evita problemas linker em versões posteriores do executável.
  3. Remover e eliminar o ficheiro RC, ficheiro Resource.h, o ResourceDll.rc2 ficheiro e o directório RES do projecto ResourceDll.
  4. No menu Project , seleccione o menu de contexto Adicionar para o Project e seleccione ficheiros . Inserir o ficheiro MyApp.RC no projecto ResourceDll.
  5. Para cada idioma adicional que MyApp irá ter localizado recursos para:

    1. No menu criar , clique em configurações e adicionar uma nova configuração de lançamento e de depuração. Por exemplo, adicionar uma Versão de francês configuração e copiar as respectivas definições de ResourceDll - versão de Win32 e adicionar uma configuração de Depuração de francês e copia as respectivas definições ResourceDll - Win32 de depuração .
    2. Na caixa de diálogo Definições do Project , seleccione Várias configurações , na caixa combinação de definições para . Escolha a versão e as configurações de projecto de depuração para um determinado idioma na caixa de diálogo Seleccionar configurações do Project para modificar . No separador recursos , adicionar as definições pré-processador AFX_RESOURCE_DLL e AFX_TARG_XXX, em que XXX é o um especificador de letra para o idioma. Por exemplo, FRA para o francês [França, DEU para alemão e ENU para inglês (E.U.A.)].

      NOTA: As definições pré-processador são separada sem espaços entre as definições de vírgula.
    3. Na combinação-caixa idioma , seleccione o idioma utilizado no recurso.

      NOTA: Poderá pretender atribuir nome as DLL para ajudar a identificá-los. Por exemplo poderá adicionar um "d" ao nome de raiz para marcá-la como uma DLL de depuração e utilize extensões de ficheiro específicas de idioma para tenha em atenção a região. Tenha em atenção que uma versão de depuração do executável não funcionará com uma versão comercializada da dll de recurso.

      Pode fazê-lo alterando o destino de saída que utiliza o linker para cada versão da DLL.

      1. Seleccionar a página de propriedades ligação a partir das definições do Project caixa de diálogo.
      2. No na Definições para caixa de combinação-, realçar configuração para o qual pretende alterar o directório de saída DLL.
      3. Certifique-se que das categorias é definida como Geral e especifique o nome do directório de saída na caixa de edição em Nome de ficheiro de saída .
      Por exemplo, para uma dll que contém localizadas recursos para o francês, alterar Debug/ResourceDLL.dll para Francês Debug / ResourceDLLd.FRA para a depuração de Win32 configuração e alteração alteram Release/ResourceDLL.dll para Release francês / ResourceDLL.FRA para a configuração do Win32 versão.

      Para utilizar estas DLLs, tem de copiar DLL pretendido para mesmo directório que está a ser MyApp.exe ou um directório apropriado do Windows e mude o nome para ResourceDll.dll ou ResourceDllD.dll. Por exemplo:

      cópia ResourceDll.FRA\windows\system\ResourceDll.dll

      Também pode especificar o directório onde o ficheiro de recursos, MyApp.res, será gerado para cada DLL localizada.

      1. Seleccione a página de propriedades recursos na caixa de diálogo definições do Project .
      2. No no Definições para caixa de combinação-, realce a configuração para o qual pretende para alterar o directório de saída do recurso.
      3. Certifique-se que das categorias é definida como Geral e especifique o directório onde será gerado o ficheiro de saída para os recursos na caixa de edição em nome de ficheiro de recursos .
  6. No menu Project , seleccione definições e realce o projecto ResourceDLL . Seleccionar Todas as configurações do definições para caixa de combinação. Clique no separador C/C ++ seguido pelo respectivo pré-processador categoria. Adicione o caminho para o projecto MyApp no campo adicionais incluem directórios .
  7. Do projecto menu, seleccione definições e realce MyApp do projecto. Seleccione Todas as configurações das Definições de caixa de combinação. Clique no separador recursos e, no campo definições Preprocessor , adicione AFX_RESOURCE_DLL . Esta definição remove todos os recursos MyApp.exe.
  8. No espaço de trabalho ResourceView, abrir cada pasta e, com a tecla CTRL premida, seleccione todos os recursos no projecto MyApp. Por exemplo, as selecções devem incluir um IDR_MAINFRAME Accelerator os IDD_ABOUTBOX para a caixa de diálogo.

    Para cada uma das configurações ResourceDLL, no menu Inserir , clique em Copiar recurso , definir o idioma para o idioma apropriado e prima ' OK ' . Deverá agora ter um conjunto completo de recursos para outro idioma. No entanto, os recursos devem ser convertidos.

    (Se o idioma para o qual pretende criar recursos localizados não estiver na lista de idiomas, seleccione outro idioma e editar manualmente o texto do ficheiro de recurso. Depois de efectuar as alterações apropriadas, os parênteses junto ao recurso irão dizer "Idioma desconhecido" e mostrar os identificadores de idioma e sub-idioma.)

    NOTA: Pode também copiar recursos com existência prévia ao ficheiro de recursos neste momento. Por exemplo, criar um AppWizard MFC separado projecto de aplicação que utiliza os recursos de idioma francês utilizando as selecções mesmas utilizado para criar MyApp inicial do projecto. Depois de criar esta aplicação, feche a respectiva área de trabalho e abrir a área de trabalho MyApp do projecto e seleccione ResourceView . Em seguida, no menu ficheiro , clique em Abrir e abrir o ficheiro RC francesa da aplicação. Agora arrastar/largar todos os recursos da aplicação francês no aplicativo MyApp. Estes recursos já estão em francês e necessário sem conversão.
  9. Adicionar uma variável de membro HINSTANCE à aplicação CWinApp deriva classe. Isto vai conter o identificador de instância DLL. Por exemplo:
       HINSTANCE m_hInstResDLL;
    						


    Dentro de definição da CWinApp::InitInstance para o projecto, adicione as seguintes três linhas na parte superior da função:

    #ifdef _DEBUG
       // Load the debug version of the localized resources.
       m_hInstResDLL = LoadLibrary("ResourceDlld.dll");
    #else
       // Load the release version of the localized resources.
       m_hInstResDLL = LoadLibrary("ResourceDll.dll");
    #endif
       ASSERT( m_hInstResDLL != NULL );
    						


    NOTA: Não é necessário chamar AfxSetResourceHandle() neste momento.
  10. Adicionar uma função de membro CMyApp::ExitInstance() utilizando a classe de assistente. Adicione código libertar a biblioteca antes do sai da aplicação. Modifique a função da seguinte forma:

    int CMyApp::ExitInstance()
    {
       // In case you load multiple DLL's make sure to free them,
       // and avoid calling FreeLibrary with a NULL pointer.
    
       FreeLibrary(m_hInstResDLL);
       return CWinApp::ExitInstance();
    }
    						


  11. Está pronta para criar a aplicação. Utilizando a caixa de diálogo Criar secção, seleccione os destinos pretendidos. Lembre-se que tem de copiar a DLL adequada para a uma localização adequada e mude o nome.

Referências

Tech Nota 56 (TN056) descreve a utilização de recursos localizadas de MFC (MFC40LOC.DLL).

Nota Tech 57 (TN057) descreve algumas das estruturas e procedimentos que pode utilizar para localizar o componente, ser uma aplicação ou um OLE controlo ou uma DLL que utiliza o MFC.

Tech Nota 23 (TN023) descreve os recursos padrão fornecido com o e necessários pela biblioteca de MFC.

Para obter informações adicionais sobre o Microsoft Foundation Classes incluída no Visual C++ versões 2.2 e anteriores, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
147149 "Como localizar recursos com Foundation Classes"


(c) 1999 Microsoft Corporation, todos os direitos reservados. Contribuições de Isaac Varon, Microsoft Corporation.

Propriedades

Artigo: 198846 - Última revisão: 1 de julho de 2004 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio 97 Service Pack 3
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Palavras-chave: 
kbmt kbhowto kbintl kbintldev KB198846 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 198846
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com