IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez C++ Discussion :

[Article][C++]faire un programme multilangues


Sujet :

Contribuez C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    wogkiller
    Invité(e)
    Par défaut [Article][C++]faire un programme multilangues
    Bonjour,
    j'ai fais ce tuto après avoir longuement cherché des informations sur le net. Puisque j'ai pas trouvé je solution complète qui fonctionnait, je poste la mienne maintenant qu'elle fonctionne parfaitement.

    La solution que je donne se fait avec des dll que l'on charge dynamiquement lorsqu'on le souhaite. Mais attention, je conseil tout de même d'attendre que le programme soit complètement fini avant de faire les dll de langues, sinon il faudra reporter dans chaque langue les modifications!

    1) Dans la solution Visual Studio, ajouter un nouveau projet. Dans le menu "win 32", sélectionnner "projet win32" et mettre un nom au projet. Par exemple "lang_Ang".

    2) Dans le wizard qui apparait, dans "paramètres de l'application"->"Type d'application" choisir "DLL" et cocher "projet vide". Puis faire "Terminer".

    3) Dans le menu "Propriétés" du nouveau projet, puis "éditeur de liens"->"Entrée"->"Toutes bibliothèques par défault ignorées" mettre "OUI(/NODEFAULTLIB)".

    4) Toujours dans "éditeur de liens", "Avancé"->"Aucun point d'entrée" mettre "OUI(/NOENTRY)". Puis "Appliquer" et "ok" pour sortir.

    5) Maintenant sous l'explorateur Windows, copier dans le projet de base les choses suivantes :
    - dossier "res"
    - les fichiers ".rc" et "ressources.h"
    et coller tout ça dans le projet dll qui vient d'être créé.

    6) Vous pouvez maintenant traduire tout ce qui doit l'être dans le projet dll à partir du fichier .rc .

    7) Maintenant, il faut dire au projet principal quelle langue il doit afficher. Pour cela plusieurs option :
    • Au chargement de l'application
    • via un menu langue
    • au chargement de l'application via un fichier de configuration
    Pour la première option, je vous donne un exemple, pour les autres, il suffit d'adapter.

    dans la méthode ::InitInstance() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     /* On charge la dll contenant la langue */
        HINSTANCE dll=LoadLibrary(TEXT("MenuEng.dll"));
        if(dll)  AfxSetResourceHandle(dll);
    et dans ::ExitInstance() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     HMODULE hDLL = AfxGetResourceHandle();
    //comparaison avec le handle de l'instance
    if (hDLL != AfxGetInstanceHandle())
    {
        // si le handle des ressources est <> du handle de l'instance 
        // c'est que les ressouces sont externes !
        // restitution et liberation finale.
        AfxSetResourceHandle(AfxGetInstanceHandle());
        FreeLibrary(hDLL);
    }
    Dernière modification par wogkiller ; 14/05/2008 à 16h02.

Discussions similaires

  1. Faire un programme qui plante et noter le plantage
    Par cedricgirard dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 16h36
  2. faire migrer programmation INFORMIX > MYSQL??
    Par idevelopper dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 08/02/2006, 17h12
  3. faire un programme sans interface
    Par timsah dans le forum C++Builder
    Réponses: 8
    Dernier message: 01/02/2006, 10h16
  4. Réponses: 7
    Dernier message: 16/04/2005, 08h55
  5. Faire un programme résident
    Par Bubonik software dans le forum C
    Réponses: 21
    Dernier message: 05/09/2004, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo