Pas de dépendances
#include <windows.h> #include <tchar.h> #include <stdio.h> int main() { int res,type = MB_OK; res = MessageBox(NULL,_T("voila le message"),_T("voila le titre"),type); printf("Code de retour : %d\n",res); return 0; }
Je mets à jour ce tutoriel pour présenter aussi bien la fonction MessageBox que le concept du TCHAR. Concept de TCHAR : ****************** Les chaînes de caractère sont historiquement des char*, tableau de char, avec 1 octet par char pour stocker de l'ASCII. Cependant, avec ce codage, on ne peut pas coder facilement de caractères comme des caractères chinois par exemple. Il a été inventé pour cela l'UNICODE. On codera les caractères sous 2 octets, en faisant un tableau de wchar_t au lieu de tableau de char. Le wchar_t est sur deux octets. Cependant, il faut conserver les deux versions possibles. Et toutes les fonctions Windows pourront être utilisées soit avec des char, soit avec des wchar_t On définira dans le projet le mot UNICODE (a coup de #define ou directement dans le projet) si on souhaite utiliser des wchar_t pour les fonctions Windows, sinon, ce sera des char. Regardez dans votre projet s'il y a UNICODE de défini ou non. Changez au besoin. Bref, les deux versions existent, et pour éviter d'alourdir le code, nous pourront utiliser des TCHAR, qui sera - soit un char si on n'est pas en UNICODE. - soit un wchar_t si on est en UNICODE. On pourra faire des tableaux de TCHAR. Vous connaissez les syntaxes pour déclarer des chaines, et des chaines unicodes : char* tmp = "plouf"; wchar_t* tmp = L"plouf"; La macro _T() (dans tchar.h) permet de mettre le L seulement si l'UNICODE est activé. On pourra alors écrire : TCHAR* tmp = _T("plouf"); La fonction MessageBox que nous allons voir attend des TCHAR*, voila pourquoi je mets des _T dans certains paramètres. Selon que UNICODE est activé, MessageBox appellera en interne soit : MessageBoxA (qui prend des char*) MessageBoxW (qui prend des wchar_t*) Passez des TCHAR* à MessageBox, et vous aurez un programme qui marche dans les deux cas. Fonction MessageBox : ********************* Tres pratique fonction MessageBox. Le premier parametre est le Handle de la fenetre dans laquelle le MessaegBox doit apparaitre (si vous voulez qu'elle aparaisse hors fenetre, comme ici, mettez NULL) Le deuxieme et troisieme parametres se comprennent bien. types : (essayez de changer pour voir) (il est possible que certains ne marchent pas en fonction de la version de votre compilateur) Vous pouvez combiner certaines options avec la barre OU : exemple : int type = MB_ICONQUESTION|MB_YESNOCANCEL; liste des types : MB_ABORTRETRYIGNORE MB_CANCELTRYCONTINUE MB_HELP MB_OK // par defaut MB_OKCANCEL MB_RETRYCANCEL MB_YESNO MB_YESNOCANCEL MB_ICONEXCLAMATION MB_ICONWARNING MB_ICONINFORMATION MB_ICONASTERISK MB_ICONQUESTION MB_ICONSTOP MB_ICONERROR MB_ICONHAND MB_DEFBUTTON1 MB_DEFBUTTON2 MB_DEFBUTTON3 MB_DEFBUTTON4 MB_APPLMODAL MB_APPLMODAL MB_SYSTEMMODAL MB_TASKMODAL MB_DEFAULT_DESKTOP_ONLY MB_RIGHT MB_RTLREADING MB_SETFOREGROUND MB_TOPMOST MB_SERVICE_NOTIFICATION MB_SERVICE_NOTIFICATION_NT3X infos complémentaires : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messagebox.asp retour : la fonction messagebox retournera une des valeurs suivantes, elle correspond au bouton sur lequel a appuyé l'utilisateur. codes de retour: #define IDOK 1 #define IDCANCEL 2 #define IDABORT 3 #define IDRETRY 4 #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 #define IDCLOSE 8 #define IDHELP 9