Esta nota describe algunos de los diseños y procedimientos que puede utilizar para localizar el componente, ya sea una aplicación o un control OLE o una DLL que utiliza MFC.
Visión general
Realmente hay dos cuestiones a resolver cuando Localice un componente que utiliza MFC. En primer lugar, debe adaptar sus propios recursos: cadenas, diálogos y otros recursos que son específicos para el componente. Mayoría de componentes construida utilizando MFC también incluye y utiliza un número de recursos que son definidos por MFC. Debe proporcionar recursos MFC localizados. Afortunadamente, varios idiomas ya son proporcionados por MFC.
Además, el componente debería estar preparado para ejecutar en su entorno de destino (Europeo o DBCS habilitado medio ambiente). En su mayor parte, esto depende de la aplicación tratar correctamente los caracteres con el conjunto de bits alta y manipulación de cadenas de caracteres de doble byte. MFC está activado, por defecto, para ambos de estos entornos, tal que es posible tener un binario único "todo el mundo" que se utiliza en todas las plataformas con diferentes recursos enchufados en el tiempo de configuración.
Localización de recursos del componente
Localización de la aplicación o DLL debería implicar simplemente reemplazando los recursos con los recursos que coinciden con el idioma de destino. Para sus propios recursos, esto es relativamente sencillo: editar los recursos en el editor de recursos y generar la aplicación. Si el código está escrito correctamente habrá cadenas o texto que desee localizar codificadas en el código fuente de C++: localización de todos puede hacerse modificando simplemente recursos. De hecho, puede implementar el componente que todos proporcionando una versión localizada no implica incluso una compilación del código original. Esto es más complejo, pero bien vale la pena y es el mecanismo elegido para MFC. También es posible localizar una aplicación carga el archivo EXE o DLL en el editor de recursos y editando directamente los recursos. Mientras que esto es posible, es necesario hecho de esos cambios cada vez construir una nueva versión de la aplicación.
Una forma de evitar es localizar todos los recursos en un archivo DLL independiente, a veces llamado un archivo DLL satélite. Esta DLL es entonces cargada dinámicamente en tiempo de ejecución y los recursos se cargan desde esa DLL en lugar de desde el módulo principal con todo el código. MFC admite directamente este enfoque. Considere la posibilidad de una aplicación llamada MYAPP.EXE; podría tener todos sus recursos ubicados en un archivo DLL llamado MYRES.DLL en la aplicación s InitInstance realizaría el siguiente para cargar esa DLL y causar MFC cargar los recursos de esa ubicación:
CMyApp::InitInstance()
{
y una de las primeras cosas en el código de inicialización
HINSTANCE hInst = LoadLibrary("myres.dll");
Si (hInst! = NULL)
AfxSetResourceHandle(hInst);
/ / seguiría otro código de inicialización
.
.
.
}
Luego de MFC cargará los recursos de esa DLL en lugar de myapp.exe. Todos los recursos, sin embargo, deben estar presentes en ese archivo DLL: MFC no buscará la instancia de la aplicación en busca de un recurso determinado. Esta técnica aplica igualmente bien a regular las DLL, así como controles OLE. El programa de instalación que copie la versión adecuada de MYRES.DLL dependiendo de la configuración regional de los recursos que le gustaría al usuario.
Es relativamente fácil crear un recurso sólo DLL. Crear un proyecto DLL, añadir tu.RC archivo a ella y añadir los recursos necesarios. Si tienes un proyecto existente que no utilice esta técnica, puede copiar los recursos de ese proyecto. Después de agregar el archivo de recursos para el proyecto está casi listo para construir el proyecto. Lo único que debe hacer es establecer al vinculador opciones para incluir /NOENTRY. Esto indica al vinculador que la DLL no tiene ningún punto de entrada: ya que no tiene código, no tiene ningún punto de entrada.
&Notanbsp; El editor de recursos de Visual C++ 4.0 y posterior admite varios idiomas por.Archivo RC. Esto puede hacer muy fácil de administrar su localización en un solo proyecto. Los recursos para cada idioma está controlada por las directivas de preprocesador generadas por el editor de recursos.
Utilizando la MFC siempre localizados los recursos
Cualquier aplicación MFC que generar reutiliza dos cosas de MFC: código y los recursos. Es decir, MFC tiene diversos mensajes de error, cuadros de diálogo integrados y otros recursos que son utilizados por las clases MFC. A fin de localizar completamente su aplicación, necesita localizar no sólo recursos de la aplicación, sino también los recursos que proceden directamente de MFC. MFC proporciona a un número de idiomas diferentes archivos de recursos automáticamente, por lo que si el idioma de que destino es uno de los idiomas que MFC admite ya, basta Asegúrese de que utilizar esos recursos localizados.
De este escrito MFC admite: chino, alemán, español, francés, italiano, japonés y coreano. Son los archivos que contienen estas versiones localizadas en el MFC\INCLUDE\L.* ('L' significa para localizar) directorios. Los archivos alemanes están en MFC\INCLUDE\L.DEU, por ejemplo. A fin de causar la aplicación para utilizar estos archivos RC en lugar de los archivos ubicados en MFC\INCLUDE, simplemente agregue un /IC:\PROGRAM FILES\DEVSTUDIO\VC\MFC\INCLUDE\L.DEU a la línea de comandos RC (esto es sólo un ejemplo, sería necesario sustituir la configuración regional de elección, así como el directorio en el que se instaló Visual C++).
Las instrucciones anteriores funcionan si su aplicación se vincula estáticamente con MFC. Mayoría de las aplicaciones vincula dinámicamente (ya es el valor predeterminado de AppWizard). En este escenario, no sólo el código dinámicamente es tan vinculados: son los recursos. Como resultado, puede localizar los recursos de la aplicación, pero los recursos de aplicación MFC todavía se cargará desde el MFC4x.DLL (o una versión posterior) o desde MFC4xLOC.DLL si existe. Esto puede acercarse desde dos ángulos diferentes.
Fu&nción únicamente en las ediciones Enterprise y Professionalnbsp; Vinculación estática a MFC sólo se admite en Visual C++ Professional Edition y Enterprise Edition. Para obtener más información, consulte Ediciones de Visual C++.
El enfoque más complejo es uno de los MFC4xLOC.DLLs localizados barco (como MFC4xDEU, para el alemán, MFC4xESP.DLL español, etc.), o una versión posterior y instalar el MFC4xLOC.DLL adecuado en el directorio del sistema cuando el usuario instala la aplicación. Esto puede ser muy complejo para el desarrollador y el usuario final y como tal no es recomendable. Ver 56 de nota técnica para obtener más información sobre esta técnica y sus advertencias.
El enfoque más simple y seguro es incluir los recursos localizados de MFC en la aplicación o DLL propio (o su archivo DLL satélite) si se utiliza uno. Esto evita los problemas de instalación MFC4xLOC.DLL correctamente. Para ello, siga las mismas instrucciones para el caso estático dado anteriormente (establecimiento de la línea de comandos RC correctamente para señalar los recursos localizados), excepto que también debe quitar los /D_AFXDLL definir que fue agregado por AppWizard. Cuando /D_AFXDLL está definido, AFXRES.H (y los demás archivos de MFC RC) realmente no definen los recursos (ya que se realizará desde la DLL de MFC en su lugar).
&Notas técnicas por número |nbsp; Notas técnicas por categoría