Partager via


TN057 : Localisation des composants MFC

[!REMARQUE]

La note technique suivante n'a pas été modifiée depuis si c'était première inclus dans la documentation en ligne.Par conséquent, certaines procédures et rubriques peuvent être obsolètes ou incorrects.Pour obtenir les informations les plus récentes, il est recommandé que vous trouviez la rubrique d'intérêt dans l'index de la documentation en ligne.

Cette remarque décrit certaines conceptions et les procédures que vous pouvez utiliser pour localiser votre composant, si est une application ou un contrôle OLE ou une DLL qui utilise MFC.

Vue d'ensemble

Il existe en fait deux problèmes à les résoudre la recherche un composant qui utilise MFC.En premier lieu, vous devez localiser vos propres ressources (chaînes, dialogues ATL, et d'autres ressources spécifiques à votre composant.La plupart des composants générés à l'aide de MFC incluent également et utilisent plusieurs ressources définies par les MFC.Vous devez fournir des ressources localisées en MFC également.Heureusement, plusieurs langages sont déjà fournis par les MFC eux-mêmes.

En outre, votre composant doit être préparé à exécuter dans son environnement cible (environnement européen ou DBCS-activé).Pour la plupart, cela dépend de votre application sur des caractères avec le bit élevé défini correctement et gestion des chaînes avec doubles caractères d'octets.MFC est activé, par défaut, pour les deux environnements, de sorte qu'il est possible qu'un fichier binaire mondial unique utilisé sur toutes les plateformes avec seulement différentes ressources branchées au moment de l'installation.

Localiser les ressources de votre composant

Localiser votre application ou DLL doit impliquer remplacer simplement les ressources avec les ressources correspondant à la langue cible.Pour vos propres ressources, c'est relativement simple : modifiez les ressources dans l'éditeur de ressources et générez votre application.Si le code est écrit correctement il n'y aura des chaînes ou textotera que vous souhaitez localiser codé en dur dans le code source C++ – toute la localisation peut être effectuée en modifiant simplement des ressources.En fait, vous pouvez implémenter votre composant tels que tout en fournissant une version localisée n'implique pas même une génération du code d'origine.C'est plus complexe, mais est un bon en valeur elle est le mécanisme choisi pour MFC elle-même.Il est également possible de localiser une application en chargeant le fichier EXE ou DLL dans l'éditeur de ressources et en modifiant les ressources directement.Pendant que possible, il requiert le reapplication de modifications chaque fois que vous générez une nouvelle version de votre application.

Une façon d'éviter qui consiste à rechercher toutes les ressources dans une DLL distincte, parfois appelé une DLL satellite.Cette DLL est ensuite chargé dynamiquement au moment de l'exécution et les ressources qui sont chargées de cette DLL à la place du module principal dans tout votre code.MFC prend en charge directement cette approche.Considérez une application appelée MYAPP.EXE ; il peut avoir toutes ses ressources localisées dans un MYRES.DLL appelé par la DLL.Dans InitInstance de l'application elle effectuerait le suivant pour charger cette DLL et pour provoquer MFC aux ressources en charge de cet emplacement :

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
   .
   .
   .
}

Dès lors, MFC chargera des ressources de cette DLL au lieu de myapp.exe.Toutes les ressources, toutefois, doivent être présentes dans cette DLL ; MFC ne recherche pas l'instance d'application à la recherche d'une ressource donnée.Cette technique applique aussi bien aux DLL normales et aux contrôles OLE.Votre programme d'installation copierait la version appropriée de MYRES.DLL en lequel les paramètres régionaux de ressource l'utilisateur souhaite.

Il est relativement aisé de créer une DLL de ressource uniquement.Vous créez un projet de DLL, ajoutez votre fichier .RC à lui, puis ajoutez les ressources nécessaires.Si vous avez un projet existant qui n'utilise pas cette technique, vous pouvez copier les ressources de ce projet.Après avoir ajouté le fichier de ressources au projet, vous êtes presque prêt à générer le projet.Les seuls éléments que vous devez faire est définie les options de l'éditeur de liens à inclure /NOENTRY.Cela indique à l'éditeur de liens que la DLL ne possède aucun point d'entrée – car il ne possède pas de code, il n'a aucun point d'entrée.

[!REMARQUE]

L'éditeur de ressources dans Visual C++ 4,0 et langages en charge ultérieurs plusieurs par fichier .RC.Cela peut rendre très facile de gérer votre localisation dans un projet unique.Les ressources pour chaque langage sont contrôlées par les directives de préprocesseur générées par l'éditeur de ressources.

Utilisation de MFC fourni possède des ressources localisées

Toute application MFC que vous générez des réutilisations deux choses MFC : code et ressources.Autrement dit, MFC possède plusieurs messages d'erreur, boîtes de dialogue prédéfinis, et d'autres ressources utilisées par les classes MFC.Afin de localiser intégralement votre application, vous devez rechercher non seulement les ressources de votre application, mais également les ressources qui proviennent directement MFC.MFC fournit un certain nombre de différents fichiers de ressources de langue automatiquement, afin que si le langage que vous ciblez soit une prend en charge MFC de langages déjà, vous devez simplement vérifier que vous utilisez ces ressources localisées.

À partir de ces écriture, prend en charge MFC Chinois, Allemand, l'Espagnol, Français, Italien, Japonais, et Coréen.Les fichiers qui contiennent ces versions localisées sont dans prend en charge MFC \INCLUDE\L.* (the 'L des ') pour les répertoires localisés.Les fichiers de l'allemand sont dans MFC \INCLUDE\L.DEU, par exemple.Pour que votre application d'utiliser ces fichiers (RC) au lieu des fichiers situés dans les MFC \INCLUDE, ajoutez /IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU à votre ligne de commande (RC) (il s'agit juste d'un exemple ; vous devez substituer les paramètres régionaux de tableau ainsi que le répertoire dans lequel vous Visual C++ installé).

Les instructions ci-dessus s'exécutera si vos liens d'application de manière statique avec MFC.La plupart de lien d'applications dynamiquement (car il s'agit de la valeur par défaut d'AppWizard).Dans ce scénario, non seulement le code est lié de manière dynamique – ce sont les ressources.Par conséquent, vous pouvez localiser vos ressources dans votre application, mais les ressources d'implémentation MFC seront encore chargés à partir de le MFC7x.DLL (ou version ultérieure) ou de MFC7xLOC.DLL s'il existe.Vous pouvez approcher faire de deux angles différents.

L'approche plus complexe est d'expédier une des MFC7xLOC.DLLs localisé (tel que MFC7xDEU, pour l'Allemand, le MFC7xESP.DLL pour l'Espagnol, etc.), ou une version ultérieure, et installe le MFC7xLOC.DLL approprié dans le répertoire système lorsque l'utilisateur installe votre application.Cela peut être très complexe pour le développeur et l'utilisateur final et comme ce type n'est pas recommandé.Consultez note technique 56 pour plus d'informations sur cette technique et ses mises en garde.

L'approche la plus simple et la plus sûre consiste à inclure des ressources localisées en MFC dans votre application ou DLL (ou son DLL satellite si vous utilisez un).Cela évite les problèmes d'installer MFC7xLOC.DLL correctement.Pour ce faire, suivez la même instruction pour le cas statique ci-dessus (définissant la ligne de commande (RC) correctement pour indiquer les ressources localisées), mais vous devez également supprimer /D_AFXDLL définissez qui a été ajouté par AppWizard.Lorsque /D_AFXDLL est défini, AFXRES.H (et les autres fichiers MFC RC) ne définit réellement aucune ressource (parce qu'ils sont extraits des DLL MFC à la place).

Voir aussi

Autres ressources

Notes techniques de nombres

Notes techniques de catégorie