[C++/Windows] afficher une variable dans une messagebox

afficher une variable dans une messagebox [C++/Windows] - C++ - Programmation

Marsh Posté le 25-09-2003 à 17:05:31    

kikoo tous
 
voila un exemple tout bete : je stocke mon nom (Jojo) dans la variable Nom (char* ou tableau au choix) et apres je veux ecrire "Bonjour Jojo"
 
Mon pb : le texte a l'air completement prédéfini quand je le transmet a ma messagebox
 

Code :
  1. MessageBox(NULL,La j'aimerai placer ma phrase qui contient ma variable,"BONJOUR",MB_OK|MB_ICONEXCLAMATION);

 
 
c'est encore un truc de débutant mais faut bien apprendre.
 
Merci tous


Message édité par iceteapeche le 25-09-2003 à 17:09:58

---------------
Se souvenir des belles choses...
Reply

Marsh Posté le 25-09-2003 à 17:05:31   

Reply

Marsh Posté le 25-09-2003 à 17:10:30    


 
 

Code :
  1. char *maVariable;
  2. ....
  3. MessageBox(NULL,maVariable,"BONJOUR",MB_OK|MB_ICONEXCLAMATION);

 

Reply

Marsh Posté le 25-09-2003 à 17:12:00    

Ca ca marche si je n'ai que ma variable
 
si je veux faire un truc du genre en C :
 
printf("Kikoo %s",Nom)
 
c po possible ca?


---------------
Se souvenir des belles choses...
Reply

Marsh Posté le 25-09-2003 à 18:01:51    

sstream ...
(sinon, sprintf si tu tiens à avoir exactement la même utilisation, mais ca reste du C)


Message édité par theshockwave le 25-09-2003 à 18:06:49
Reply

Marsh Posté le 25-09-2003 à 18:30:01    

Code :
  1. MessageBox(NULL,sprintf("Bonjour %s",Nom),"BONJOUR",MB_OK|MB_ICONEXCLAMATION);

 
 
ca marche ca?


---------------
Se souvenir des belles choses...
Reply

Marsh Posté le 25-09-2003 à 18:30:21    

non
d'aileurs tu l'aurais vu si t'avais essayer
regarde de la doc sur sprintf

Reply

Marsh Posté le 25-09-2003 à 18:34:28    

Tu peux également faire la chose Windows-style en utilisant la fonction FormatMessage et les ressources de messages.


---------------
each day I don't die is cheating
Reply

Marsh Posté le 29-07-2004 à 02:32:22    

euh en faite on fait comment pour afficher simplement une variable genre  
int a=55;
afficher a dans une petite fenetre?
lol, c bo de débuter non?


---------------
!jb!
Reply

Marsh Posté le 29-07-2004 à 07:39:39    

un truc du genre :

Code :
  1. ostringstream str;
  2. str << "ma variable a " << a;
  3. MessageBox(NULL, str.str().c_str(),....


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 29-07-2004 à 12:34:44    

euh c koi le nom de l'entete qui contient ostringstream???


---------------
!jb!
Reply

Marsh Posté le 29-07-2004 à 12:34:44   

Reply

Marsh Posté le 29-07-2004 à 12:40:11    

bouh ca marche pas, mon code c  
void CNewDlg::OnOK()  
{
 // TODO: Add extra validation here
 int a=66;
 ostringstream str;  
   str << "ma variable a " << a;  
 CDialog::MessageBox(NULL,oss.str().c_str(),MB_OK|MB_ICONEXCLAMATION);  
}
et ca met que ostringstream est "undeclared identifier"
c quoi mon probleme?


---------------
!jb!
Reply

Marsh Posté le 29-07-2004 à 13:36:45    

Pour le sprintf :  
un ptit exemple en C (qui marchera dans ton code donc)
 
char buf[256];
sprintf(buf,"Mon entier est %d\n",mon_entier);
MessageBox(...,buf,...);
 
inconvénient : le dépassement de capacité doit etre possible si tu met plus de 256 caractères dans ton buffer, ce qui n'est pas le cas dans cet exemple (un entier, c 4 octets => en base 10, ya que 10 chiffres au max)! ATTENTION donc. Le mieux est alors de faire un malloc avec la bonne taille (et le free qui va avec).
 
Sinon, ca reste du C, ya mieux en C++ comme proposé plus haut.

Reply

Marsh Posté le 29-07-2004 à 14:09:48    

oliv5 a écrit :

Pour le sprintf :  
un ptit exemple en C (qui marchera dans ton code donc)
 
char buf[256];
sprintf(buf,"Mon entier est %d\n",mon_entier);
MessageBox(...,buf,...);


euh ca marche mais le "mon entier est 5" s'affiche en tant que titre de la message box, comment on fait pour le mettre dedans???


---------------
!jb!
Reply

Marsh Posté le 29-07-2004 à 14:12:32    

lunarnet76 a écrit :

euh ca marche mais le "mon entier est 5" s'affiche en tant que titre de la message box, comment on fait pour le mettre dedans???


et si tu regardais un peu les paramètres de MessageBox ? :o
 
http://msdn.microsoft.com/library/ [...] agebox.asp


Message édité par Harkonnen le 29-07-2004 à 14:13:21

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 29-07-2004 à 14:20:52    

c simple le debugger dit que la fonction MessageBox ne prend pas 4 parametres, alors que sur msdn et partt ou j ai cherche ca en prend 4...
void CNewDlg::OnOK()  
{
 // TODO: Add extra validation here
 char buf[256];  
 int a=66;
 sprintf(buf,"Mon entier est %d",a);  
 CDialog::MessageBox(NULL,"cool",buf,MB_OK|MB_ICONEXCLAMATION);  
}


---------------
!jb!
Reply

Marsh Posté le 29-07-2004 à 14:25:46    

lunarnet76 a écrit :

c simple le debugger dit que la fonction MessageBox ne prend pas 4 parametres, alors que sur msdn et partt ou j ai cherche ca en prend 4...
void CNewDlg::OnOK()  
{
 // TODO: Add extra validation here
 char buf[256];  
 int a=66;
 sprintf(buf,"Mon entier est %d",a);  
 CDialog::MessageBox(NULL,"cool",buf,MB_OK|MB_ICONEXCLAMATION);  
}


... ou l'art de mélanger Win32 et MFC ...
t'es en train de royalement te planter ! tu utilises la fonction MessageBox de CWnd qui prend 3 paramètres, alors que tu as consulté la doc de MessageBox pour Win32, qui prend effectivement 4 paramètres :pfff:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 29-07-2004 à 14:28:14    

oh #°§¬#mais qu est ce que j suis bete... NULL c la ou fo mettre le texte lol ...


---------------
!jb!
Reply

Marsh Posté le 29-07-2004 à 14:32:20    

ostringstream c'est le mieux. sprintf c'est dangereux, pénible à gérer (taille du buffer, spécificateur de type %d %f...) et comme la cat c'est C++, autant donner une solution C++ standard.
#include <sstream>
using namespace std;
// code de xterminhate


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed