begin process at 2012 02 09 15:34:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > MSGBOX DEBUG

MSGBOX DEBUG


 Information sur la source

 Description

Cette petite fonction est ultra trop pratique pour debuguer, notament les applications graphiques.

Source

  • #include <windows.h>
  • #include <stdarg.h>
  • #include <stdio.h>
  • #define MSGBOX_BUFFER_LENGTH 512
  • void msgbox(char *title, char *format, ...)
  • {
  • int len;
  • char buff[MSGBOX_BUFFER_LENGTH];
  • va_list ap;
  • va_start(ap, format);
  • len = _vsnprintf(buff, MSGBOX_BUFFER_LENGTH, format, ap);
  • va_end(ap);
  • MessageBox(NULL, buff, title, NULL);
  • }
#include <windows.h>
#include <stdarg.h>
#include <stdio.h>

#define MSGBOX_BUFFER_LENGTH		512

void	msgbox(char *title, char *format, ...)
{
	int			len;
	char		buff[MSGBOX_BUFFER_LENGTH];
	va_list		ap;

	va_start(ap, format);
	len = _vsnprintf(buff, MSGBOX_BUFFER_LENGTH, format, ap);
	va_end(ap);
	MessageBox(NULL, buff, title, NULL);
}

 Conclusion

Voila, avec vous n'avez plus qu'a renseigner un titre pour votre boite de message, et ensuite ca s'utilise comme printf, facile non ? =)


 Sources du même auteur

Source avec Zip Source avec une capture KONKYO (ASM COMPILER, DECOMPILER, DEBUGGER, MACHINE VIRTUELL...
Source avec Zip CSOCKET
Source avec Zip CJOYPAD
CONSOLE COLOR
Source avec Zip CROCOLIB

 Sources de la même categorie

Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik

Commentaires et avis

Commentaire de JCDjcd le 12/01/2004 19:11:37

deux petits problemes :

1) le jour ou il y a une erreur et que l'on veut afficher un message d'erreur, il ne faut pas que le programme se quitte, et comme dans beaucoup d'autres cas, il faut absolument pouvoir choisir la fenetre mere (le HWND ne doit pas etre par default =NULL)

2) Il faut pouvoir choisir les icones de la boite (exclamation,error,interogation,hand,...)


Ce qui est moins important c'est de choisir juste un boutton Ok, et la variable &lt;len&gt; serte a quoi ??


Sinon cette source est tres utile, dans le sens ou il permet le nombre variable d'arguments, et grace a ce genre de "sur-couche", ca evite de toujours declarer en local un buffer, et de tout refaire ...

Commentaire de JCDjcd le 12/01/2004 19:12:37

excuse, je retifie, "il ne faut absolument pas que le programme CONTINUE"

Commentaire de sebseb42 le 12/01/2004 20:50:57

alors lol et re-lol, je sais que tu m'aime pas JCDjcd mais la quand meme, c'est du gratuit...

"il ne faut absolument pas que le programme CONTINUE"

tu code un jeux, tu as pas d'outout mais tu veux connaitre la valeur d'une variable, par exemple la position z d'un objet, tu affiche et boum tu flingue ton jeux ? ca serais dommage quand meme... j'ai dit DEBUG, j'ai pas dit gestion d'erreur, il faut savoir lire entre les lignes mon p'tit gars

"il faut absolument pouvoir choisir la fenetre mere (le HWND ne doit pas etre par default =NULL)"

une application est une application, que tu ai une ou plusieurs fenetre, on s'en fout pas mal de savoir quel fenetre envoie la MsgBox puisqu'au final, on a le meme resultat

"Il faut pouvoir choisir les icones de la boite exclamation, error, interogation, hand, ...)"

qu'est-ce qu'on en a a foutre puisque c'est du DEBUG, c'est pour notre poire (le programmeur). tu mettrais des peintures hyper-cher sur tes murs avant de les recouvrir de papier peint ?

"ca evite de toujours declarer en local un buffer"

heu... CA declare toujours un buffer en local, relis le code si tu veux, il as pas changer, enfin tu pourrais declarer une fois en global, mais bon, c'est du code a l'arache

enfin pour conclure, je ne sais pas qu'elle est ta profession JCDjcd, mais j'espere juste pour l'avenir du logiciel que tu n'est pas analyste

Commentaire de sebseb42 le 12/01/2004 20:53:43

ah oui aussi, la variable len, c'est au cas ou tu voudrais faire des traitement sur le buffer derriere, ca serais dommage de faire un strlen apres alors que _vsnprintf la renvoie, mais avoir des bonnes idées n'est pas donner a tout le monde

Commentaire de Hellaynnea le 12/01/2004 21:48:34

Moi jsuis pas d'accord avec JCDjcd, je trouve qu'elle est pratique cette source. Juste un truc, c'est que pour le HWND il peut etre utile de pouvoir le changer. Pke si tu ouvres une dialog box en mode modalframe et que par dessus tu la mets au dessus de toute application tes messagebox apparaitrons derrière mais bon la je pinaille un peu (je sais ca m'est déja arrivé récemment dans un projet professionnel). sinon c sympas et c pratique. Au pire ce que je faisais aussi c  t la mm chose mais sans la fonction, en gros je la met que qd j'en ai besoin c avec ostringstream (sstream.h) qui agit comme un stream (genre cout ou un fichier) :
int a,b,c;
string s = "hello";
[...]
ostringstream ss;
ss&lt;&lt;s&lt;&lt;"("&lt;&lt;a&lt;&lt;'-'&lt;&lt;b&lt;&lt;")";
MessageBox(hwnd,ss.str().c_str(),"MON TITRE",MB_OK);


voila c pratique qd c juste un debug a un point précis du programme :D

et puis ca peut éviter d'avoir un buffer de 512 statique
++

Commentaire de JCDjcd le 13/01/2004 17:24:00

Mais non, il ne faut pas etre paranoiaque ....
Poue ce qui est du buffer local, c'est a toi de relire ("ca EVITE de ..."), justement, cette source est bien parceque c'est elle qui declare le buffer en local, et non l'appellant, c'est bien la factorisation de code.
Et enfin pour ce qui est de l'HWND, le jour ou tu es dans une boucle de 1000 iterations, alors tu auras directement 1000 boites de dialogue dont tu ne sais pas l'ordre ....

Un autre question, est-il possible d'avoir aussi un valist pour le titre, ca se programme facilement ??, car on a droit a qu'un valist, plutot on a le droit qu'a mettre les "...3 a un seul endroit.

Sinon, je ne suis pas specialement arage contre toi, une source, il faut faut toujours un peu la critiquer, sinon moi je la trouve bien pour d'autre aspect : simple, clair, petit, court, tres explicite,utile(=factorisation de code), et est un tres bon exemple de fonction a nombre variable d'arguments.

:)

Commentaire de sebseb42 le 13/01/2004 18:16:08

on pourrais effectivement definir aussi un autre valist pour le titre, mais je pense que ce serais bien inutile, et trop lourd pour le mec qui debug

Commentaire de darunia le 23/05/2008 13:47:05

Exemple d'utilisation de va_list et vprintf ... très interessant (car peu courant !)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales