begin process at 2012 05 29 11:56:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

FormatMessage et va_list


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

FormatMessage et va_list

mardi 17 août 2004 à 22:18:31 | FormatMessage et va_list

Nebula

Membre Club
Bonsoir à tous !

J'essaie de formater mes messages d'erreurs à partir de GetLastError et de quelques autres variables passées à une procédure, un peu comme printf mais version MessageBox...

J'utilise donc le code suivant :
VOID nnc_message (PSTR format, va_list args) {
PSTR msg = NULL;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, format, 0, 0, msg, 0, &args);
MessageBox(HWND_DESKTOP, msg, "Attention !", MB_ICONWARNING | MB_OK);
LocalFree(msg);
}


Le problème vient surtout de l'utilisation de va_list, qui est inconnue de mon fichier d'aide... Quelqu'un sait à quoi çà correspond, et comment l'utiliser (uniquement via Win32) ?
mardi 17 août 2004 à 22:30:11 | Re : FormatMessage et va_list

vecchio56

Administrateur CodeS-SourceS
va_list n'a rien a voir avec Win32, c'est du C:
typedef char * va_list; dans <stdio.h>
mardi 17 août 2004 à 22:33:24 | Re : FormatMessage et va_list

BruNews

Administrateur CodeS-SourceS

void DisplayLastError(HWND hOwner)
{
LPVOID lpMsgBuf = 0;
DWORD dwErr = GetLastError();
if(dwErr) {
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dwErr, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
(LPTSTR) &lpMsgBuf, 0, NULL);
if(lpMsgBuf) {
MessageBox(hOwner, (LPCTSTR)lpMsgBuf, "Error", MB_ICONEXCLAMATION );
LocalFree(lpMsgBuf);
}
}
}

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 17 août 2004 à 22:38:45 | Re : FormatMessage et va_list

djl

ouai, ou alors toujours en c standard avec les macros de stdargs.h

void func( int n, ... )
{
int *t;
unsigned i;
va_list arg_lst;

t = malloc( n* sizeof *t );

va_start( arg_lst, n);

for( i = 0; i < n; i++ )
{
t[i] = va_arg( arg_lst, int);
}
va_end(arg_lst);

free(t);
}

pour mettre n parametre dans un tableau
mardi 17 août 2004 à 22:56:38 | Re : FormatMessage et va_list

Nebula

Membre Club
Hum vecchio56, c'est stdarg et non stdio, et je sais ce que c'est merci. Seulement Microsoft a plein de fonctions "remplaçant" les standards (par exemple lstrcat, lstrcmp, etc), et je me demandais s'il en avait ici aussi, voilà tout !

On va simplifier : peut-on faire comme un printf, c'est à dire formater un message dynamiquement mais avec la fonction très pratique de FormatMessage, à savoir dont le buffer est alloué automatiquement par le système ? La version de BruNews est bien, mais j'aimerais inclure diverses informations en plus du texte de GetLastError.

Merci !

PS : ne me répondez pas wsprintf, il n'alloue pas de buffer que je sache.
mardi 17 août 2004 à 23:03:30 | Re : FormatMessage et va_list

BruNews

Administrateur CodeS-SourceS
wsprintf

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 17 août 2004 à 23:07:13 | Re : FormatMessage et va_list

vecchio56

Administrateur CodeS-SourceS
J'ai pas osé la faire, mais j'aurais dû; je m'en mords les doigts a présent
mardi 17 août 2004 à 23:09:37 | Re : FormatMessage et va_list

djl

c'est quoi wsprintf ?
mardi 17 août 2004 à 23:11:08 | Re : FormatMessage et va_list

vecchio56

Administrateur CodeS-SourceS
C'est sprintf, mais version Windows
mardi 17 août 2004 à 23:12:45 | Re : FormatMessage et va_list

Nebula

Membre Club
Très drôle :p

J'ai finalement pu faire ce que je voulais, avec FormatMessage. Merci quand même !

1 2

Cette discussion est classée dans : code, format, msg, list, formatmessage


Répondre à ce message

Sujets en rapport avec ce message

Creation DLL avec OCX sans fenêtre de dialogue [ par reydau ] Bonjour,j'ai un petit problème que je n'arrive pour l'instant pasà résoudre car je doit mal m'y prendre.J'essaye de créer une MFC de type DLL en utili problème pour récupérer une variable [ par arwenita ] Avec C++ Builder, je récupère une donnée et je veux l'afficher. Lorsque je le fais directement, ca marche :resultat->Lines->Text=cle1->Text.c_str();< TreeView+ToolTip sans MFC [ par Manson ] Salut,voila je cree mon TreeView comme ca :HWND TreeView;DWORD Style;TreeView = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEW, "TreeView", va_list [ par garslouche ] Salut à tous,je voudrais faire un truc idiot mais c juste pour un test : je voudrais faire une fonction myprintf qui fasse comme printf (en utilisant Accept files dans list control (api win32) [ par youpiyoyo ] ca fais 2 heures ke je galere sur comment reussir deja dans un permier temps a capter le message quand un fichier est selectioner puis mis dans la lis Afficher dans une List box [ par Wiwi ] Bonjour,je souhaite insérer des données dans une list box.Pour le moment j'utilise :m_msg_box.AddStirng("1");m_msg_box.AddString("2");m_msg_box.AddStr lire des valeur dans un fichier texte et les inserer dans une list box [ par pidoumtimo ] Bonjour.Je pense que le sujet decrit mon probleme.Au final la list box est vide.voila le bout de code ki me permet de lire et d'afficher.GetDlgI pourquoi ce bout de code ne fonctionne pas? [ par flatou ] tout est dans le titre, voici le code :#include #include "resource.h"LRESULT CALLBACK AppDlgProc(HWND, UINT, WPARAM, LPARAM);HWND hMain automation excel [ par ricky78 ] bonjourA l'aide d'une class encapsuler ADO j'arrive à me connecter à un fichier excel.J'aimerais connaitre la syntaxe SQL pour arriver à ecrire dans u Msg d'errur;"Memory map" [ par mohacode ] Bonjour, J'ai un code en c sous linux(je travaille avec fedora 8) Mon problème que le pg est exécutable mais il s'éxécute seulement une fois (normalem


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,686 sec (4)

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