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 :

Problème de MessageBox


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Par défaut Problème de MessageBox
    Bonjour,

    j'ai un soucis avec les MessagesBox,

    Mon programme test si un champ dans mon Ihm est vide
    if(login=="")
    MessageBox("ABCD","ABCD",MB_OK);

    Lors de ma compilation
    1ere erreur:
    Erreur 1 error C2664: 'CWnd::MessageBoxW' : impossible de convertir le paramètre 1 de 'const char [5]' en 'LPCTSTR'.
    Donc je fais un cast de mon premier élément

    je compile deuxieme erreur:
    impossible....paramètre 2 ....
    je cast

    Compilation:

    La fênetre s'affiche mais les caractère de ma boite de dialogue sont des carré :s

    D'ou vient mon problème?

  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
    ton programme est configuré en UNICODE, les chaines doivent être entourées de _T()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     MessageBox(_T("ABCD"),_T("ABCD"),MB_OK);
    sinon il faut changer l'option ,j'en ai déjà parlé dans un autre post.

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Par défaut
    En effet celà marche, mais qu'est ce que cette fonction _T() a de si particulier?

  4. #4
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    L'affichage des textes via les MFC fonctionnent en type TCHAR. Le TCHAR est un caractère template (TCHAR). Ce qui veut dire qu'au moment de la compilation, si tu compiles en UNICODE, il remplace les TCHAR par des wchar_t, ou en char si tu compiles en ANSI. Caractères tout à fait différents (la taille de l'un est le double de la taille de l'autre), et donc traitement par Windows pour l'affichage complètement différents.

    Mettre _T() sur tes chaînes de caractères indique que ton texte va être compris en TCHAR par le compilateur, et donc bien adapté au moment de la compilation.

    LPCTSTR veut dire Long Pointer Const TCHAR STRing.

    Ton erreur indique que tu compiles en UNICODE : MessageBoxW, W pour wide, donc wchar_t. Il a choisi celle là car comme je te l'ai dit plus haut, en fonction de tes options de compilation (UNICODE ou ANSI), il va aller faire un traitement différent (MessageBoxW pour UNICODE et MessageBoxA pour ANSI). Le méthode MessageBox est en fait juste une macro qui va aller chercher l'une des deux sus-citées au moment de la compilation en fonction que tu soies en UNICODE ou en ANSI. D'où l'intérêt de mettre du TCHAR en paramètre.

    PS: pense à mettre "Résolu"

Discussions similaires

  1. Problème de MessageBox avec File.Copy
    Par fedos dans le forum Développement Windows
    Réponses: 2
    Dernier message: 28/10/2011, 20h43
  2. Réponses: 6
    Dernier message: 25/11/2008, 11h02
  3. problème fermeture MessageBox
    Par duguek dans le forum C++
    Réponses: 1
    Dernier message: 12/07/2007, 12h30
  4. Problème avec MessageBox.Show
    Par A&Nexus dans le forum Windows Mobile
    Réponses: 4
    Dernier message: 02/01/2007, 13h57
  5. Problème avec les Yes\No MessageBox...
    Par YolLuTRaC dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/08/2005, 14h38

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