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 :

MFC & CreateWindowEX


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut MFC & CreateWindowEX
    Bonjour,

    J'ai un problème avec un projet dans lequel je mixe des chaines de caractères Unicode et ANSI.
    Ce projet vient d'être porté de VC6 vers VC8.

    J'essaie d'afficher une chaine de caractères Unicode dans un contrôle CStatic d'une CDialog, sans avoir défini les constantes _UNICODE et UNICODE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetDlgItemTextW(this->m_hWnd, IDC_STATIC_WEBSITE,szBuf);
    Dans un projet de test, lui aussi porté de VC6 vers VC8, il n'y a aucun soucis. Je passe une chaine de caractères chinois à SetDlgItemTextW, et la vois bien s'afficher sur le CStatic. (Pas de définition de _UNICODE et UNICODE ici non plus).

    1ère piste :
    Je suppose que la création de CDialog et de n'importe quel contrôle avec les MFC fait appel "dans la cave" à CreateWindowEx. Je suppose aussi que pour afficher des caractères unicode sur mon contrôle, il faut qu'il ai été crée avec CreateWindowExW. (dites moi si j'ai faux jusqu'ici). Donc, si mon raisonnement est bon, avec un outil type IDA (desassembleur) je devrais trouver une trace de CreateWindowExW, dans le binaire pour lequel l'affichage de caractères unicode fonctionne ....
    Ce n'est pas le cas, par contre je vois bien SetDlgItemTextW ...

    Auriez-vous une explication ??
    Et Deuxieme question comment pourrais-je forcer l'appel de CreateWindowExW pour la création des controles qui afficheront des caracteres unicode ??

    ++
    Fred

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    D'après la doc de IsWindowUnicode(), le fait qu'une fenêtre soit unicode ou non ne dépend pas du CreateWindow[Ex](), mais du RegisterClass[Ex]().
    Bref, c'est la classe de fenêtre qui est unicode ou non, pas la fenêtre elle-même : On ne peut avoir une fenêtre unicode et une fenêtre non-unicode de la même classe.

    Pour les contrôles simples, on peut supposer qu'ils sont tous unicode sous un Windows moderne. D'autres, comme les RichEdit, ont deux classes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    Ca voudrait dire que mon problème serait plutôt une histoire de mapping des bons glyphs pour les caracteres chinois dans ce cas ??

    Sur cette piste, j'essaie de changer la police du controle par une police en chinois Traditionnel, mais ca ne marche pas non plus. Alors que les caracteres latins sont affichés correctement ...

  4. #4
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    c'est tombé en marche ....

    La seule modif que j'ai faite est de passer mon fichier Rc en Unicode. Mais pour comprendre pourquoi cette soudaine tombée en marche, j'ai remis une version ANSI du fichier rc ... et ca marche toujours ....

    A comprends pas ?!?!?

    La verite est ailleurs ....
    To be continued !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. MDI sans MFC, possible ?
    Par delire8 dans le forum MFC
    Réponses: 4
    Dernier message: 17/06/2002, 07h38
  3. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  4. Réponses: 2
    Dernier message: 10/06/2002, 11h03
  5. [MFC] ADO connection
    Par philippe V dans le forum MFC
    Réponses: 3
    Dernier message: 10/06/2002, 07h36

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