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 397
    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 397
    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