Cómo crear archivos DLL de recursos localizados para aplicaciones MFC

Seleccione idioma Seleccione idioma
Id. de artículo: 198846 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

DLL de recursos son un medio eficaz para utilizar recursos en diferentes idiomas. Las aplicaciones pueden proporcionar una única DLL que se ha localizado recursos a través de su programa de instalación. Cambiar a otro idioma es una cuestión sencilla de utilizar la DLL correcta.

La información siguiente explica cómo convertir un recurso localizado DLL con Visual C++ 5.0.

Más información

Este artículo describe un método sencillo, general para generar una aplicación y capaz de admitir varios idiomas DLL de recursos. Mediante este método tiene todos los recursos en un archivo RC, facilitando así bastante ver qué recursos se ha implementado.

  1. Cree una aplicación de MFC AppWizard predeterminada (denominada MyApp en este ejemplo) y especifique Inglés para el idioma de los recursos. Biblioteca MFC de uso como un archivo DLL compartido .
  2. Insertar un archivo DLL de MFC AppWizard predeterminado como un proyecto de nivel superior ( ResourceDll en este ejemplo) y seleccione DLL de extensión de MFC (mediante el archivo DLL compartido de MFC) para el tipo de DLL. Porque no se crea ningún archivo .lib para el archivo DLL, un proyecto de nivel superior evita problemas de vinculador en compilaciones posteriores del ejecutable.
  3. Quitar y eliminar el archivo RC, el archivo Resource.h, ResourceDll.rc2 el archivo y el directorio de recursos del proyecto ResourceDll.
  4. En el menú proyecto , seleccione el menú emergente Agregar proyecto y elija archivos . Inserte el archivo MyApp.RC en el proyecto ResourceDll.
  5. Para cada idioma adicional que MyApp se han localizado recursos para:

    1. En el menú Generar , haga clic en configuración y agregue una nueva configuración de lanzamiento y depuración. Por ejemplo, agregar una Versión de francés de configuración y copiar su configuración de ResourceDll - versión de Win32 y agregar una configuración Debug de francés y copiar su configuración de ResourceDll - Win32-Depurar .
    2. En el cuadro de diálogo Configuración del proyecto , elija Varias configuraciones , en el cuadro-combinado de configuración para . Elija la versión y las configuraciones de proyecto de depuración para un idioma concreto en el cuadro de diálogo Seleccionar configuraciones de proyecto a modificar . En la ficha recursos , agregue las definiciones del preprocesador AFX_RESOURCE_DLL y AFX_TARG_XXX, donde XXX es el un especificador de letra para el idioma. Por ejemplo, FRA para francés [Francia, ALEMÁN para alemán y ENU para inglés (EE.UU.)].

      Nota: Las definiciones de preprocesador son comas sin espacios entre las definiciones.
    3. En el lenguaje cuadro combinado, seleccione el idioma utilizado en el recurso.

      Nota: Quizás desee nombre los archivos DLL para ayudar a identificarlos. Por ejemplo que desea agregar una "d" el nombre de raíz para marcarlo como una archivo DLL de depuración y utilice extensiones de archivo específicas del idioma para anotar la configuración regional. Tenga en cuenta que una versión de depuración del archivo ejecutable no funcionará con una versión de la dll de recursos.

      Se puede hacer cambiando el destino de salida que utiliza el vinculador para cada generación de la DLL.

      1. Seleccione la página de propiedades de vínculo en la configuración de proyecto cuadro de diálogo.
      2. En el en el Configuración de cuadro combinado, resalte la configuración que desea cambiar el directorio de salida DLL.
      3. Asegúrese de que categoría está establecida en General y especifique el nombre del directorio de resultados en el cuadro de edición en Nombre de archivo de salida .
      Por ejemplo, para una dll que contiene recursos localizados para francés, cambiar Debug/ResourceDLL.dll a depuración francés / ResourceDLLd.FRA para la depuración de Win32 configuración y cambio cambian Release/ResourceDLL.dll a versión francés / ResourceDLL.FRA para la configuración Release de Win32.

      Para utilizar estos archivos DLL, debe copiar el archivo DLL deseada en el mismo directorio que MyApp.exe está en o un directorio de Windows apropiado y cámbiele el nombre a ResourceDll.dll o ResourceDllD.dll. Por ejemplo:

      copia ResourceDll.FRA\windows\system\ResourceDll.dll

      También puede especificar el directorio donde se generará el archivo de recursos, MyApp.res, para cada DLL localizado.

      1. Seleccione la página de propiedad de recursos en el cuadro de diálogo configuración de proyecto .
      2. En el en el Configuración de cuadro combinado, resalte la configuración que desea cambiar el directorio de salida de recursos.
      3. Asegúrese de que categoría está establecida en General y especificar el directorio donde se generará el archivo de salida los recursos en el cuadro de edición en nombre de archivo de recurso .
  6. En el menú proyecto , seleccione configuración y resalte el proyecto ResourceDLL . Elija Todas las configuraciones de la configuración para cuadro combinado. Haga clic en la ficha C/C ++ seguida por el preprocesador categoría. Agregue la ruta para el proyecto MyApp en el campo directorios de inclusión adicional .
  7. En el proyecto menú, seleccione configuración y resaltar el MyApp del proyecto. Elija Todas las configuraciones de la Configuración de cuadro combinado. Haga clic en la ficha recursos y, en el campo de las definiciones del preprocesador , agregue AFX_RESOURCE_DLL . Esta definición quita todos los recursos de MyApp.exe.
  8. En el área de trabajo ResourceView, abrir cada carpeta y, con la tecla CTRL presionada, seleccione todos los recursos en el proyecto MyApp. Por ejemplo, las selecciones deben incluir un IDR_MAINFRAME para el acelerador y cuestión (IDD_ABOUTBOX) para el cuadro de diálogo.

    Para cada una de las configuraciones de ResourceDLL, en el menú Insertar , haga clic en Copiar recursos , establezca el idioma en el idioma apropiado y haga clic en Aceptar . Ahora debe tener un conjunto completo de recursos para otro idioma. Los recursos, sin embargo, deben traducirse.

    (Si el idioma que desee crear los recursos localizados no está en la lista de idiomas, seleccione otro idioma y modificar manualmente el texto del archivo de recursos. Una vez realizados los cambios apropiados, los corchetes junto al recurso se diga "Lenguaje desconocido" y mostrar los identificadores de lenguaje y sublenguaje.)

    Nota: También puede copiar los recursos existentes en el archivo de recursos en este momento. Por ejemplo, crear un independientes de MFC AppWizard proyecto de aplicación que utiliza los recursos de idioma utilizando las mismas selecciones utilizado para crear el MyApp inicial del proyecto. Después de crear esta aplicación, cierre su área de trabajo y abrir el área de trabajo de proyecto de MyApp y seleccione ResourceView . A continuación, en el menú archivo , haga clic en Abrir y abra el archivo RC de la aplicación francés. Ahora arrastrar y colocar todos los recursos de la aplicación francés en la aplicación MyApp. Estos recursos están ya en francés y no necesitan ninguna traducción.
  9. Agregar una variable de miembro HINSTANCE a la aplicación de CWinApp clase derivada. Esto contendrá el identificador de instancia del archivo DLL. Por ejemplo:
       HINSTANCE m_hInstResDLL;
    						


    Dentro de la definición de CWinApp:: InitInstance para el proyecto, agregue las tres líneas siguientes al principio de la función:

    #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: No es necesario llamar a AfxSetResourceHandle() en este momento.
  10. Agregar una función de miembro CMyApp::ExitInstance() mediante la clase Asistente. Agregue código al liberar la biblioteca antes de la aplicación finaliza. Modifique la función como sigue:

    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. La aplicación está preparada para la generación. Mediante el cuadro de diálogo generación por lotes, seleccione los destinos que desee. Recuerde que debe copiar la DLL apropiada en el una ubicación adecuada y cámbiele el nombre.

Referencias

Nota técnica 56 (TN056) describe el uso de recursos localizados de MFC (MFC40LOC.DLL).

Nota técnica 57 (TN057) describen algunos de los diseños y los procedimientos que puede utilizar para localizar el componente ser que una aplicación o un OLE control o un archivo DLL que utiliza MFC.

Nota técnica 23 (TN023) describe los recursos estándar proporcionados con y necesita por la biblioteca MFC.

Para obtener información adicional acerca de Microsoft Foundation Classes incluido con Visual C++ versiones 2.2 y anteriores, consulte en contacto con el siguiente artículo en Microsoft Knowledge Base:
147149 "Cómo adaptar los recursos con clases MFC"


(c) Microsoft Corporation 1999, Reservados todos los derechos. Contribuciones por Isaac Varon, Microsoft Corporation.

Propiedades

Id. de artículo: 198846 - Última revisión: jueves, 01 de julio de 2004 - Versión: 1.1
La información de este artículo se refiere a:
  • Service Pack 3 de Microsoft Visual Studio 97
  • Microsoft Visual C++ 5.0 Professional
  • Microsoft Visual Basic 5.0 Enterprise Edition
Palabras clave: 
kbmt kbhowto kbintl kbintldev KB198846 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 198846
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

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