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

C++ Discussion :

Conversion Ansi vers Unicode


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut Conversion Ansi vers Unicode
    Bonjour, je cherche à convertir d'ANSi en unicode dans mon programme , HNULL qui est défini comme cela :

    #define HNULL (SYS_HANDLE)0
    merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    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 394
    Par défaut
    Ben, je ne vois pas ce qu'il y a à convertir ici...

    On peut savoir comment est défini SYS_HANDLE ?
    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
    Invité
    Invité(e)
    Par défaut
    heu, tu sais ce que c'est unicode et ansi ?

    je ne vois pas ce que ton HNULL vient faire la

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    PostMessage( FindWindow( GalssClassName2_unicode, (LPCWSTR) HNULL),
    J'en ai besoin pour cette fonction car LPCWSTR est foireux.

    typedef void * SYS_HANDLE;

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Tu devrais peut-être poster ca sur le forum Visual C++.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    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 394
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PostMessage( FindWindow( GalssClassName2_unicode, NULL), ...);
    C'est pourtant simple.
    Je ne vois pas ce que venait faire un SYS_HANDLE là-dedans...

    Et quand on programme bien, on utilise des LPCTSTR. On programme tout en TCHAR, et hop, c'est magique, on n'a pas besoin de convertir en unicode!


    PS: Le cast d'avant était nécessaire parce qu'en C++ NULL est défini à 0 au lieu de (void*)0, parce qu'en C++ il n'y a pas de conversion implicite de void* à un autre type de pointeur.

    Ce qui hélas, permet d'utiliser NULL pour autre chose qu'un pointeur, à moins d'un compilateur qui utilise sa propre extension pour NULL.
    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.

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    LPCTSTR tu peux utiliser ca en ansi ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par FamiDoo
    LPCTSTR tu peux utiliser ca en ansi ?
    ok, petit résumé sur la signification du nom :
    LP-C-T-STR :
    LP : long pointer
    C : constant
    T : using TCHAR
    STR : string
    donc, c'est une string de type C (pointer de chars) terminée par un NULL, donc char caractere est un TCHAR plutot qu'un simple char ou wchar_t.

    TCHAR est défini comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if !defined(UNICODE)
        #define TCHAR char
    #else
        #define TCHAR wchar_t
    #endif
    donc tu utilises des TCHAR partout dans ton code ; si tu veux builter ton code en ansi, tu mets un #undef UNICODE dans un entete qui est appelé par tout le monde, sinon, si tu veux builter en unicode, tu changes la commande précédente par un #define UNICODE

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Citation Envoyé par FamiDoo
    LPCTSTR tu peux utiliser ca en ansi ?
    ANSI et UNICODE, c'est fait pour...

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    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 394
    Par défaut
    si tu veux builter ton code en ansi, tu mets un #undef UNICODE dans un entete qui est appelé par tout le monde, sinon, si tu veux builter en unicode, tu changes la commande précédente par un #define UNICODE
    Sous un Visual C++ récent (6 non, 2005 oui), tu as des options pour définir directement: Project properties -> Configuration properties -> General -> Option "Character set".

    Sous un Visual plus ancien comme le 6, tu définis ou non les symboles UNICODE et _UNICODE (il faut toujours les deux ou aucun: Le premier est utilisé par l'API Win32, le second par la C Run-Time library et les MFC) dans le champ "Preprocessor definitions" qui doit se trouver, de mémoire dans les Project Settings -> onglet "C/C++"


    Citation Envoyé par FamiDoo
    (Une question réthorique mais fausse) (un smiley "mais qu'il est con quand même")
    Cherche pas, j'ai toujours raison ( Vaniteux, moi ? )
    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.

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    merci Médi comme d'hab
    Je voulais mettre NULL mais je voulais ta confirmation .

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

Discussions similaires

  1. Conversion MBCS vers UNICODE
    Par stephdim dans le forum MFC
    Réponses: 3
    Dernier message: 02/03/2009, 15h27
  2. [E-03]Conversion ANSI vers OEM
    Par Delivrance dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/12/2008, 20h09
  3. Conversion de chaine vers unicode
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/01/2007, 22h22
  4. conversion chaîne multioctets vers unicode
    Par Bruno75 dans le forum Delphi
    Réponses: 1
    Dernier message: 25/09/2006, 15h53

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