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 :

texte avec variable dans messageBox


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    Janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 147
    Par défaut texte avec variable dans messageBox
    bonjour,
    comme dit dans le titre, j'essaie d'inclure une variable dans le text d'une messageBox en langage c avec la bibli windows.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    MessageBox(NULL, TEXT("Pas fait la vaisselle pendant %f jours.\n", duree/86400), TEXT("Message"), MB_OK);
    // ca marche pas
    // alors j'ai créé une variable 
    char message[40];
    // puis j'ai fait 
    sprintf(message, "Pas fait la vaisselle pendant %f secondes.\n", &duree_tm);
    MessageBox(NULL, TEXT("& message &"), TEXT("Message"), MB_OK);
    // mais le message qui s'affiche c'est : & message &
    j'aurai bien voulu utiliser messageBox de Windows car ca m'évite de développer en SDL et de creer une fenetre pour afficher le message contenant la variable.
    c'est faisable ou pas ? s'il y a un autre moyen simple je suis preneur aussi
    merci de votre patience avec moi ;o))

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonjour.

    La méthode avec sprintf fonctionne, mais tu demandes à MessageBox d'afficher le texte "& message &" au lieu de ta variable message.

    MessageBox(NULL, message, TEXT("Message"), MB_OK); devrait fonctionner mieux

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Attention, char message[40]; risque de ne pas être assez : la chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Pas fait la vaisselle pendant %f secondes.\n"
    compte déjà 44 caractères.

    Le & devant duree_tm est aussi de trop. Ici on veut juste sa valeur, et non son adresse pour pouvoir la modifier lors d'une saisie par exemple avec scanf.

  4. #4
    Membre confirmé
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    Janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 147
    Par défaut
    bonjour et merci Manudiclemente et Winjerome.
    j'ai fait vos 2 modifs,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char message [100];
    sprintf(message, "Pas fait la vaisselle pendant %f secondes.\n", duree_tm);
    	MessageBox(NULL, message, TEXT("Message"), MB_OK);
    mais ca m'affiche des caractères incompréhensibles (genre hiéroglyphes)
    et à la fermeture du programme j'ai l'alerte : Run-Time Check Failure #2 - Stack around the variable 'message' was corrupted.

    ...
    et j'ai l'erreur suivante :
    1 IntelliSense*: l'argument de type "char *" est incompatible avec le paramètre de type "LPCWSTR" c:\users\admin\documents\visual studio 2010\projects\calendrier\calendrier\main.c 130
    (la ligne 130, c'est : MessageBox(NULL, message, TEXT("Message"), MB_OK);

  5. #5
    Invité
    Invité(e)
    Par défaut
    Tu dois compiler en Unicode, il te faut alors utiliser des wide char wchar_t à la place des char. On utlise alors swprintf à la place de sprintf, qui prend un argument supplémentaire : la taille maximale (qui t'évitera le genre de débordement que je t'ai fait remarquer )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wchar_t message [100];
    swprintf(message, 100, L"Pas fait la vaisselle pendant %f secondes.\n", duree_tm);

  6. #6
    Membre confirmé
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    Janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 147
    Par défaut
    oui, Winjerome tu as raison, cela marche maintenant !
    mais pourquoi je compile en unicode ? ce n'est pas mon choix ! j'utilise VisualStudio 2010 et je compile avec ses optionspar défaut, je n'ai rien changé
    merci encore à vous 2

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

Discussions similaires

  1. Boucle for avec variable dans le texte
    Par Alplob dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/06/2011, 10h33
  2. Réponses: 9
    Dernier message: 23/08/2010, 14h41
  3. placer dans une texbox du texte avec variable
    Par flamel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/03/2010, 21h15
  4. [AS2] Pb avec variables dans syntaxe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/07/2005, 11h28

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