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 :

MessageBox (suite I)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut MessageBox (suite I)
    Salut à tous

    J'ai le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    double rtest;
    	rtest = 23.24;
    	char buffer[50];
    	sprintf(buffer, "La valeur de rtest est : %.2lf", rtest);
     
    	//MessageBox(NULL, TEXT("Hello world!"), TEXT("Message"), MB_OK); -- Ceci marche.
    MessageBox(NULL, TEXT("Hello world!"), buffer, MB_OK);
    Ca coince à la compilation à la 4ième ligne de code (à l'appel de la fonction 'MessageBox') et j'ai le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    1>d:\arxinclude\commandes\bati2.h(12) : error C2664: 'MessageBoxW' : cannot convert parameter 3 from 'char [50]' to 'LPCWSTR'
    Comment faire marcher ça ?

    Ou plutôt comment adapter une chaîne de caractères formatée dans une variable de type 'char' ou même de type 'wchar_t' en 'LPCWSTR' ?

    Merci d'avance.

    A++

    belam

  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
    Bosse en TCHAR:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <tchar.h>
     
    ...
     
    	double rtest;
    	rtest = 23.24;
    	TCHAR buffer[50];
    	_stprintf(buffer, TEXT("La valeur de rtest est : %.2lf"), rtest);
     
    	//MessageBox(NULL, TEXT("Hello world!"), TEXT("Message"), MB_OK); -- Ceci marche.
    	MessageBox(NULL, buffer, TEXT("Message"), MB_OK);
    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
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut
    Salut Medinoc

    La compilation de ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                 double rtest;
    	rtest = 23.24;
     
    	char StrMess[20];
    	TCHAR buffer[50];
    	_stprintf(buffer, "La valeur de rtest est : %.2lf", rtest);
    me répond ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2664: '_swprintf' : cannot convert parameter 2 from 'const char [31]' to 'const wchar_t *'

    'tchar.h' est bien inséré.

    Merci d'avance.

    A++

    belam

    A++

  4. #4
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut
    Salut Medinoc

    La compilation de ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                 double rtest;
    	rtest = 23.24;
     
    	char StrMess[20];
    	TCHAR buffer[50];
    	_stprintf(buffer, "La valeur de rtest est : %.2lf", rtest);
                 MessageBox(NULL, buffer, TEXT("Test MessageBox"), MB_OK);
    me répond ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2664: '_swprintf' : cannot convert parameter 2 from 'const char [31]' to 'const wchar_t *'
    En revanche, lorsque j'écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     	_stprintf(buffer, _T"La valeur de rtest est : %.2lf", rtest));
                 MessageBox(NULL, buffer, TEXT("Test MessageBox"), MB_OK);
    La compilation et l'édition des liens passent mais à l'exécution MessageBox m'affiche ça :

    La valeur de rtest est : 0.00

    C'est du au fait qu'à la compilation j'ai le warning

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     	warning C4002: too many actual parameters for macro '_T'
    Mais ça c'est un autre problème.

    J'ai entrevu une fonction vsnprintf, mais je ne l'ai pas encore testé

    Merci d'avance pour une piste.

    A++

    belam

  5. #5
    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
    Il faut mettre TEXT("abc") ou _T("abc"), pas _T"abc".
    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.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut
    Autant pour moi Medinoc

    Je vais tester et si ça marche je clorai la discussion.

    Au passage quelle est la combinaison de touches qui permet, lorsqu'on a le curseur sur '(' ou sur '[', de le placer sur ')' ou ']' ? Ca fait longtemps que je n'ai pas codé et je l'ai oubliée. Merci.

    A++

    belam

  7. #7
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut
    Salut à tous

    Je suis en train de faire tourner cette discussion commence au monologue.

    Je suis désolé mais j'ai fait une erreur dans le report de mon code au 4ième post et j'ai bien le warning

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    warning C4002: too many actual parameters for macro '_T'
    A++

    belam

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

Discussions similaires

  1. reauete suite à une requete
    Par 74160 dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/08/2003, 14h42
  2. [JSP][JDBC]1 seule connexion à la DB(suite)
    Par betherb dans le forum JDBC
    Réponses: 6
    Dernier message: 14/08/2003, 10h02
  3. Migration Access > SQL Server (suite) : Compteur
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2003, 14h08
  4. Réponses: 2
    Dernier message: 04/03/2003, 23h24
  5. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 11h39

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