Accueil > > > AFFICHER LE TEXTE D'UN EDITBOX DANS UN MESSAGEBOX()
AFFICHER LE TEXTE D'UN EDITBOX DANS UN MESSAGEBOX()
Information sur la source
Description
Ce petit bout de code vous montre comment créée une fenêtre, un bouton et une zone de texte en C++. En appyant sur le bouton un MessageBox() s'affiche avec le texte du EditBox... Bref c'est une personne qui m'à demandé de faire un exemple et de le mettre ici... :| Donc voila, il y est!
Source
- Voila le code:
-
- /*************************************************/
-
- #include <windows.h>
-
- // ID du EditBox
- #define ID_EDITBOX 100
- // ID du Button
- #define ID_BUTTON 101
-
- // Nom de la classe
- char MainClassName[] = "GetWindowText";
- // Instance du programme
- HINSTANCE MainInstance;
- // Handle de la fenêtre
- HWND MainHandle;
- // Handle du EditBox
- HWND EditHandle;
- // Handle du Button
- HWND ButtonHandle;
-
- // Prototype
- LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
-
- /*************************************************/
-
- // Entré du programme
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
- {
-
- // Pour recevoir et transmettre les messages
- MSG msg;
- // Pour créé la fenêtre
- WNDCLASSEX wc;
-
- // Sauvegarde l'instance
- MainInstance = hInstance;
-
- // Création de la classe
- wc.hInstance = MainInstance; // Instance du programme
- wc.lpszClassName = MainClassName; // Nom de la classe
- wc.lpfnWndProc = WinProc; // Procédure qui va recevoir les messages
- wc.style = CS_DBLCLKS; // Le style...
- wc.cbSize = sizeof(WNDCLASSEX); // Taille de la struct
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // L'icône(grande)
- wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // L'icône(petite)
- wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Le curseur
- wc.lpszMenuName = NULL; // Menu
- wc.cbClsExtra = 0; // ...
- wc.cbWndExtra = 0; // ...
- wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); // BackColor(Couleur de fond)
-
- // Enregistre la classe
- if (!RegisterClassEx(&wc))
- return 0; // Erreur ...
-
- // Crée la fenêtre
- MainHandle = CreateWindowEx(0, MainClassName, "GetWindowText (Sample)", WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL,hInstance, NULL);
-
- if (MainHandle == NULL)
- return 0; // Erreur ...
-
- // Cré le EditBox
- EditHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_CHILD|
- WS_VISIBLE|ES_MULTILINE|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|
- ES_WANTRETURN, 0, 0, 535, 300, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
-
- if (EditHandle == NULL)
- return 0; // Erreur ...
-
- // Cré le Button
- ButtonHandle = CreateWindowEx(0, "BUTTON", "&Afficher le texte", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
- 5, 305, 140, 40, MainHandle, (HMENU)ID_BUTTON, hInstance, NULL);
-
- if (ButtonHandle == NULL)
- return 0; // Erreur ...
-
- // Envoie du texte dans le EditBox
- SetWindowText(EditHandle, "Appuyer su le bouton [Afficher le texte] pour faire afficher\r\nce texte dans un MessageBox();");
-
- // Affiche la fenêtre
- ShowWindow(MainHandle, SW_SHOW);
- // Met à jour la fenêtre
- UpdateWindow(MainHandle);
-
- // Recoie et transmet les messages à WinProc
- while (GetMessage(&msg, NULL, 0, 0))
- {
-
- TranslateMessage(&msg);
- DispatchMessage(&msg);
-
- }
-
- // Fin du programme
- return msg.wParam;
-
- }
-
- /*************************************************/
-
- // Réception des messages
- LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
-
- switch (msg)
- {
- // Ferme le programme
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
-
- // Reception des commandes
- case WM_COMMAND:
-
- // Vérifie si on à cliquer sur le bouton
- if ((LOWORD(wParam) == ID_BUTTON) && (HIWORD(wParam) == BN_CLICKED))
- {
-
- // Va contenir le texte du EditBox
- char *LeText = NULL;
- // Va contenir le nombres de caractères dans le EditBox
- unsigned int TextLen = 0;
-
- // Récupère le nombres de caractères dans le EditBox
- TextLen = GetWindowTextLength(EditHandle);
- // S'il n'est pas vide
- if (TextLen)
- {
-
- // Alloue de la mémoire pour stocker le texte
- LeText = new char[(TextLen + 2)];
- // Récupère le texte
- TextLen = GetWindowText(EditHandle, LeText, (TextLen + 1));
- // Si aucune erreur et le EditBox contient bien quelque chose
- if (TextLen)
- {
- // Affiche le texte
- MessageBox(MainHandle, LeText, "Voila le texte", MB_OK);
-
- }
- else
- {
- // Erreur lors de la récupération du texte
- MessageBox(MainHandle, "Erreur lors de la récupération du texte", "Erreur", MB_OK);
-
- }
- // Libère la mémoire
- delete [] LeText;
-
- }
- else
- {
- // Le EditBox est vide
- MessageBox(MainHandle, "Le EditBox est vide!", "Edit Vide", MB_OK);
-
- }
-
- }
-
- default: // Par default...
- return DefWindowProc(hwnd, msg, wParam, lParam);
- break;
-
- }
-
- return 0;
-
- }
-
- /*************************************************/
Voila le code:
/*************************************************/
#include <windows.h>
// ID du EditBox
#define ID_EDITBOX 100
// ID du Button
#define ID_BUTTON 101
// Nom de la classe
char MainClassName[] = "GetWindowText";
// Instance du programme
HINSTANCE MainInstance;
// Handle de la fenêtre
HWND MainHandle;
// Handle du EditBox
HWND EditHandle;
// Handle du Button
HWND ButtonHandle;
// Prototype
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
/*************************************************/
// Entré du programme
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
{
// Pour recevoir et transmettre les messages
MSG msg;
// Pour créé la fenêtre
WNDCLASSEX wc;
// Sauvegarde l'instance
MainInstance = hInstance;
// Création de la classe
wc.hInstance = MainInstance; // Instance du programme
wc.lpszClassName = MainClassName; // Nom de la classe
wc.lpfnWndProc = WinProc; // Procédure qui va recevoir les messages
wc.style = CS_DBLCLKS; // Le style...
wc.cbSize = sizeof(WNDCLASSEX); // Taille de la struct
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // L'icône(grande)
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // L'icône(petite)
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Le curseur
wc.lpszMenuName = NULL; // Menu
wc.cbClsExtra = 0; // ...
wc.cbWndExtra = 0; // ...
wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); // BackColor(Couleur de fond)
// Enregistre la classe
if (!RegisterClassEx(&wc))
return 0; // Erreur ...
// Crée la fenêtre
MainHandle = CreateWindowEx(0, MainClassName, "GetWindowText (Sample)", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL,hInstance, NULL);
if (MainHandle == NULL)
return 0; // Erreur ...
// Cré le EditBox
EditHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_CHILD|
WS_VISIBLE|ES_MULTILINE|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|
ES_WANTRETURN, 0, 0, 535, 300, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
if (EditHandle == NULL)
return 0; // Erreur ...
// Cré le Button
ButtonHandle = CreateWindowEx(0, "BUTTON", "&Afficher le texte", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
5, 305, 140, 40, MainHandle, (HMENU)ID_BUTTON, hInstance, NULL);
if (ButtonHandle == NULL)
return 0; // Erreur ...
// Envoie du texte dans le EditBox
SetWindowText(EditHandle, "Appuyer su le bouton [Afficher le texte] pour faire afficher\r\nce texte dans un MessageBox();");
// Affiche la fenêtre
ShowWindow(MainHandle, SW_SHOW);
// Met à jour la fenêtre
UpdateWindow(MainHandle);
// Recoie et transmet les messages à WinProc
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// Fin du programme
return msg.wParam;
}
/*************************************************/
// Réception des messages
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
// Ferme le programme
case WM_DESTROY:
PostQuitMessage(0);
break;
// Reception des commandes
case WM_COMMAND:
// Vérifie si on à cliquer sur le bouton
if ((LOWORD(wParam) == ID_BUTTON) && (HIWORD(wParam) == BN_CLICKED))
{
// Va contenir le texte du EditBox
char *LeText = NULL;
// Va contenir le nombres de caractères dans le EditBox
unsigned int TextLen = 0;
// Récupère le nombres de caractères dans le EditBox
TextLen = GetWindowTextLength(EditHandle);
// S'il n'est pas vide
if (TextLen)
{
// Alloue de la mémoire pour stocker le texte
LeText = new char[(TextLen + 2)];
// Récupère le texte
TextLen = GetWindowText(EditHandle, LeText, (TextLen + 1));
// Si aucune erreur et le EditBox contient bien quelque chose
if (TextLen)
{
// Affiche le texte
MessageBox(MainHandle, LeText, "Voila le texte", MB_OK);
}
else
{
// Erreur lors de la récupération du texte
MessageBox(MainHandle, "Erreur lors de la récupération du texte", "Erreur", MB_OK);
}
// Libère la mémoire
delete [] LeText;
}
else
{
// Le EditBox est vide
MessageBox(MainHandle, "Le EditBox est vide!", "Edit Vide", MB_OK);
}
}
default: // Par default...
return DefWindowProc(hwnd, msg, wParam, lParam);
break;
}
return 0;
}
/*************************************************/
Conclusion
Créé et tester sous Dev-C++ 4 only.
En cas de problèmes avec ce code ou autres, laissez moi un message!
Historique
- 18 mai 2007 02:16:59 :
- ajout des mots clés( Vous aussi, mettez vos sources à jour !!! Ajoutez les mots clés !!! )
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Petite question c pour débuguer avec MessageBox (SDK windows) [ par sprintjeffC ]
slt,je trouve pratique de débuguer avec les messagebox comme en vb ;-))) En C + framework windows il faut se donner la peine de convertir en chaine la
textBox Windows Forms sous Vc++ 7 [ par mirax ]
Bonjour a tous! J'utilise une textbox en windows forms qui recoit independement des chaines de caracteres via un socket UDP. J'aimerai que le slider d
Namespaces non disponible [ par jayjay9531 ]
Bonjour,C'est vraiment une question de débutant je pense. Voilà mon problème, je commence à programmer en c++ et je voulais juste faire des tests avec
API windows [ par 69lion69 ]
Salut a tous ds le cadre de mon projet je doit faire des mfc mais cela me pose des problème lorsque je veux l'associerr a des fonction api window
Application [ par Arnauti ]
Bonjour, je suis nul et j'ai presque jamais fait de C/C++. Enfin, si quelque truc sous dos. Mais j'aimerais créé une aplication mais pas so
librairie de gestion des Services Windows [ par zedoo ]
bonjour, je suis a la recherche d'une lib me permettant de demarrer ou de stopper des Services Windows. j ai trouve la Class ServiceController mais qu
Creer un bouton avec l'API Windows [ par banane_rose ]
code : ICI C'est sensé faire apparaitre une fenêtre avec un gros bouton "Quitter" au milieu . Mais rien ne marche , même pas l'affichag
C vers Interface windows [ par Piolo ]
Salut, je travail sous visual Studio .Net, J'ai réalisé un programme en C multifichier. J'ai un fichier qui s'appel interface.c. Ce fichier
installation de postgreSQL [ par sapsap2 ]
bonjour,j'essai d'installer postgreSQl; version windows; mais à chaque fois j'ai de message:"Le service 'Secondary Logon ' n'est pas pas en cours
Fenêtre Windows de base en C++ [ par tintin72 ]
Bonjour à tous, Je voudrais savoir comment programmer une fenêtre Windows de base en C++, cad encapsulé dans une classe (mais pas de MF
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|