Comment faire pour créer des DLL de ressources localisées pour une application MFC

Traductions disponibles Traductions disponibles
Numéro d'article: 198846 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

DLL de ressource sont un moyen efficace pour que l'utilisation des ressources dans différentes langues. Les applications peuvent fournir une DLL unique a localisé des ressources par l'intermédiaire de leur programme d'installation. Passage à une autre langue relève de l'utilisation de la DLL correcte.

Les informations ci-dessous explique comment faire une ressource localisée DLL avec Visual C++ 5.0.

Plus d'informations

Cet article décrit une méthode simple, en générale pour la génération d'une application et capable de prendre en charge plusieurs langues de la DLL de ressource. À l'aide de cette méthode, vous disposez de toutes les vos ressources dans un seul fichier RC, rendant relativement facile à voir les ressources auxquelles vous avez implémenté.

  1. Créez une application MFC AppWizard (appelée MyApp dans cet exemple) et spécifier l'Anglais des États-Unis pour la langue des ressources. Utiliser MFC bibliothèque sous la forme d'une DLL partagée.
  2. Insérer une valeur par défaut MFC AppWizard DLL sous la forme d'un projet de niveau supérieur (ResourceDll dans cet exemple), puis sélectionnez la DLL d'extension MFC (avec DLL MFC partagée) pour le type de DLL. Dans la mesure où aucun fichier .lib n'est créé pour la DLL, un projet de niveau supérieur évite des problèmes de l'éditeur de liens dans les versions ultérieures de l'exécutable.
  3. Supprimer et supprimer le fichier RC, le fichier Resource.h, le ResourceDll.rc2 fichier et le répertoire RES à partir du projet ResourceDll.
  4. Dans le menu projet, sélectionnez le menu contextuel Ajouter au projet et choisissez les fichiers. Insérez le fichier MyApp.RC dans le projet ResourceDll.
  5. Pour chaque langue supplémentaire que MyApp va ont localisés ressources pour :

    1. Dans le menu Générer, cliquez sur les configurations et ajouter une nouvelle configuration Release et Debug. Par exemple, ajoutez une Version française de configuration et copier ses paramètres à partir de ResourceDll - Win32 Release et ajouter une configuration Debug français et copier ses paramètres à partir de ResourceDll - Win32 Debug.
    2. Dans la boîte de dialogue Paramètres du projet, choisissez Configurations multiples, dans la zone de liste déroulante paramètres pour. Choisir la version et les configurations de projet de débogage pour une langue particulière dans la boîte de dialogue Sélectionner les configurations de projet à modifier. Dans l'onglet ressources, ajoutez les définitions de préprocesseur AFX_RESOURCE_DLL et AFX_TARG_XXX, où XXX est le spécificateur de lettre pour la langue. Par exemple, FRA pour le français [France, DEU pour l'allemand et français pour anglais (États-Unis)].

      Remarque : Les définitions de préprocesseur sont par des virgules sans espaces entre les définitions.
    3. Dans la zone de liste déroulante langue, sélectionnez la langue utilisée dans la ressource.

      Remarque : Vous souhaiterez peut-être nommer vos DLL pour vous aider à les identifier. Par exemple vous souhaiterez peut-être ajouter un «d» au nom racine pour marquer comme une DLL de débogage, utilisent des extensions de fichier spécifique au langage de noter les paramètres régionaux. Sachez qu'une version de débogage de l'exécutable ne fonctionnera pas avec une version finale de la dll de ressource.

      Pour cela en modifiant la cible de sortie de l'éditeur de liens utilise pour chaque build de la DLL.

      1. Sélectionnez la page de propriétés de lien à partir des paramètres de projet boîte de dialogue.
      2. Dans le dans la Paramètres pour liste déroulante-zone, sélectionnez configuration pour lequel vous voulez modifier le répertoire de sortie DLL.
      3. Assurez-vous que la catégorie a la valeur Général et spécifier le nom du répertoire de sortie dans la zone d'édition sous Nom du fichier de sortie.
      Par exemple, pour une dll contenant des ressources localisées pour le français, modifiez Debug/ResourceDLL.dll à français Debug / ResourceDLLd.FRA pour Win32 Debug configuration et des modifications modifient Release/ResourceDLL.dll à Release français / ResourceDLL.FRA pour la configuration Win32 Release.

      Pour utiliser ces DLL, vous devez copier la DLL de votre choix dans le même répertoire MyApp.exe est en cours ou un répertoire approprié de Windows et renommez en ResourceDll.dll ou ResourceDllD.dll. Par exemple :

      copie ResourceDll.FRA\windows\system\ResourceDll.dll

      Vous pouvez également spécifier le répertoire où le fichier de ressources, MyApp.res, sera généré pour chaque DLL localisée.

      1. Sélectionnez la page de propriétés de ressources à partir de la boîte de dialogue paramètres de projet.
      2. Dans les dans la Paramètres pour liste déroulante-zone, sélectionnez configuration pour laquelle vous voulez modifier le répertoire de sortie de ressources.
      3. Assurez-vous que la catégorie a la valeur Général et spécifier le répertoire où le fichier de sortie pour les ressources sera généré dans la zone d'édition sous nom de fichier de ressources.
  6. Dans le menu projet, sélectionnez les paramètres et mettez en surbrillance le projet ResourceDLL. Sélectionnez Toutes les configurations à partir de la paramètres pour zone de liste modifiable. Cliquez sur l'onglet C/C++ suivie de son préprocesseur catégorie. Ajoutez le chemin d'accès pour le projet MonApp dans le champ autres répertoires inclus.
  7. Dans le projet menu, sélectionnez paramètres et surbrillance MyApp du projet. Sélectionnez Toutes les configurations à partir de Paramètres pour une zone de liste modifiable. Cliquez sur l'onglet ressources et dans le champ de définitions de préprocesseur, ajoutez AFX_RESOURCE_DLL. Cette définition supprime tous les ressources de MyApp.exe.
  8. Dans l'espace de travail ResourceView, ouvrez chaque dossier et, avec la touche CTRL enfoncée, sélectionnez toutes les ressources dans le projet MonApp. Par exemple, vos sélections doivent inclure un IDR_MAINFRAME du Accelerator et IDD_ABOUTBOX pour la boîte de dialogue.

    Pour chacune des configurations ResourceDLL, dans le menu Insertion, cliquez sur Copie de ressources, définissez la langue selon la langue appropriée et appuyez sur OK. Vous devez maintenant avoir un ensemble complet des ressources pour une autre langue. Les ressources, cependant, doivent être traduites.

    (Si la langue pour laquelle vous souhaitez créer des ressources localisées n'est pas dans la liste des langues, sélectionnez une autre langue et modifier manuellement le texte d'un fichier de ressources. Après avoir apporté les modifications appropriées, les crochets à côté de la ressource seront exprimer "Langue inconnue" et afficher les identificateurs de langue et sous-langue.)

    Remarque : Vous pouvez également copier des ressources préexistantes dans le fichier de ressources pour l'instant. Par exemple, créer un distinct MFC AppWizard projet d'application qui utilise les ressources de langue française à l'aide des mêmes sélections vous permet de créer MyApp initiale du projet. Après avoir créé cette application, fermer son espace de travail et ouvrir l'espace de travail de projet MonApp et sélectionnez ResourceView. Ensuite, dans le menu fichier, cliquez sur Ouvrir et ouvrez fichier RC de l'application français. Maintenant glisser-déplacer toutes les ressources à partir de l'application française dans l'application MonApp. Ces ressources sont déjà en français et doivent sans traduction.
  9. Ajouter une variable de membre HINSTANCE à l'application de CWinApp classe dérivée. Il contiendra le handle d'instance de DLL. Par exemple :
       HINSTANCE m_hInstResDLL;
    						


    À l'intérieur de la définition de CWinApp::InitInstance de votre projet, ajoutez les trois lignes suivantes en haut de la fonction :

    #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 );
    						


    Remarque : Il n'est pas nécessaire d'appeler AfxSetResourceHandle() à ce stade.
  10. Ajouter une fonction de membre CMyApp::ExitInstance() à l'aide de la classe Assistant. Ajoutez le code de libération de la bibliothèque avant des issues de l'application. Modifiez la fonction comme suit :

    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. L'application est prête à créer. À l'aide de la boîte de dialogue Générer en tâche de fond, sélectionnez les cibles de votre choix. N'oubliez pas que vous devez copier la DLL appropriée dans l'emplacement approprié et renommez-le.

Références

Note technique 56 (TN056) décrit l'utilisation des ressources MFC localisées (MFC40LOC.DLL).

Note technique 57 (TN057) décrit certaines des conceptions et les procédures vous pouvez utiliser pour localiser votre composant, être il une application ou un OLE contrôle ou une DLL qui utilise les MFC.

Note technique 23 (TN023) décrit les ressources standard fournis avec et requises par la bibliothèque MFC.

Pour plus d'informations sur la Microsoft Foundation Classes inclus avec Visual C++ versions 2.2 et les versions antérieures, consultez l'article suivant dans la base de connaissances Microsoft :
147149 «Comment faire pour Localize ressources avec des Classes Foundation»


(c) 1999 Microsoft Corporation, tous droits réservés. Contribution Isaac Varon, Microsoft Corporation.

Propriétés

Numéro d'article: 198846 - Dernière mise à jour: jeudi 1 juillet 2004 - Version: 1.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Studio 97 Service Pack 3
  • Microsoft Visual C++ 5.0 Édition Professionnelle
  • Microsoft Visual Basic 5.0 Édition Entreprise
Mots-clés : 
kbmt kbhowto kbintl kbintldev KB198846 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 198846
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Envoyer des commentaires

 

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