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

MFC Discussion :

Petit soucis de resource localisée


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut Petit soucis de resource localisée
    Bonjour,
    Au démarrage de mon appli je charge les resources linguistiques (dll de resource) en fonction de la localisation. J'utilise pour se faire la méthode décrite dans la Faq (merci Farscape).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
      HINSTANCE dll = LoadLibrary(InstDir+m_aLangDll.GetAt(0));
      if (dll) AfxSetResourceHandle(dll);
    ...
    Cela fonctionne très bien sauf à de petites exeptions:
    lorsque j'utilise dans mon code la macro MAKEINTRESOURCE pour accéder à une string, la string retournée est la string présente dans les resources de base de l'appli et non pas celle présente dans la dll. Je pense pouvoir très facilement contourner cela, mais j'aurais voulu savoir si cela ne cachait pas d'autres surprises.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    étrange j'ai fait un LoadString avec une CString avec un numéro d'identifiant aucun problème....
    tu peux essayer comme ça pour voir ?

  3. #3
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    Bonsoir,

    Le problème avec une resource de type string créée par :
    CString(MAKEINTRESOURCE(id))

    est que la fonction utilise AfxFindResourceHandle() (une variante spéciale pour les string il me semble) et que si celle ci trouve une resource existante correspondant a la langue du systeme d'exploitation, il court-circuitera le AfxGetResourceHandle() (qui contient le handle des resources de la DLL) --> il cherchera toujours la resource la plus appropriée.

    Solutions:

    * Utiliser ::LoadString() (pas la fonction des CString, mais celle de l'API Windows) et tout coder a la main. (GetBuffer() / ReleaseBuffer())
    * Supprimer les autres resources et en laisser qu'une seule, celle de la DLL.
    * Laisser comme c'est, le windows de la bonne langue affichera la bonne chaine.

    @+

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Citation Envoyé par farscape Voir le message
    salut,
    étrange j'ai fait un LoadString avec une CString avec un numéro d'identifiant aucun problème....
    tu peux essayer comme ça pour voir ?
    En fait dans mon code j'utilise principalement CString::LoadString() sans aucun soucis. J'ai même délivré un update sans me rendre compte que certaines strings n'était pas chargées correctement. Seul quelques tooltips sont corrompus. Ces ToolTips sont initialisés avec MAKEINTRESOURCE(id), ce sont principalement des anciennes partie de code.
    Les tooltips initialisés avec LoadString() sont corrects. Donc pour moi le problème se situe au niveau de MAKEINTRESOURCE. Je vais remplacer les initialisations faisant appel à cette fonction.

Discussions similaires

  1. Petit soucis pour se connecter à l'adsl
    Par Blowih dans le forum Réseau
    Réponses: 4
    Dernier message: 28/07/2004, 00h16
  2. petit soucy de fenetre cmd
    Par FeetloveR666 dans le forum Windows
    Réponses: 5
    Dernier message: 03/07/2004, 14h24
  3. petit soucis lors d'un LOAD DATA INFILE
    Par Jovial dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 04/06/2004, 11h58
  4. Réponses: 6
    Dernier message: 21/01/2004, 13h25
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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