begin process at 2012 05 27 13:23:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > AFFICHER LE TEXTE D'UN EDITBOX DANS UN MESSAGEBOX()

AFFICHER LE TEXTE D'UN EDITBOX DANS UN MESSAGEBOX()


 Information sur la source

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :messagebox, getwindowtext, textbox, windows Niveau :Débutant Date de création :04/08/2001 Date de mise à jour :18/05/2007 02:16:59 Vu / téléchargé :10 719 / 445

Auteur : NitRic

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 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!

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   GetWindowText
    • GetWindowText.devTélécharger ce fichier [Réservé aux membres club]393 octets
    • GetWindowText.exeTélécharger ce fichier [Réservé aux membres club]27 136 octets
    • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 523 octets
    • main.oTélécharger ce fichier [Réservé aux membres club]2 786 octets
    • rsrc.oTélécharger ce fichier [Réservé aux membres club]1 026 octets
    • Rsrc.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier77 octets

Télécharger le zip


 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

TRONQUER UN FICHIER(C - WINDOWS)
COMMENT CALCULER LE TEMP D'EXÉCUTION DE CERTAINES FONCTIONS ...
Source avec Zip VSTACK ( EFFET DE PILE ) / TEMPLATE
Source avec Zip NENGINE ( MOTEUR DE RECHERCHE POUR FICHIER ) (UPDATE)
Source avec Zip NLIST ( TEMPLATE )

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ... par pgl10
Source avec Zip Source avec une capture SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE T... par eustatika
Source avec Zip [MYLIB] GESTION DE FICHIERS par Galaad2908
Source avec Zip PROTECTION AU DÉMARAGE DE WINDOWS ET PENDANT par daminator2
Source avec Zip MODIFIER RAPIDEMENT SON FICHIER HOST par sholvaC

Commentaires et avis

Commentaire de pharaonix le 13/05/2003 11:54:04

moi jaurai fait la meme chose que toi en trente ligne de moins.
tu declare
char szNOM[20];
puis
GetDlgItemText(hDlg, IDC_EDIT1, szNOM, 7);
pour recuperer le text de ta messagebox
et enfin
MessageBox(0,szNOM,"titre_de_la_messagebox",MB_OK);

enfin voila, trois ligne pour faire la meme action. chuis debutant mais ca marche. mais cest vrai quil ne gere pas leditbox vide
dans ce cas, tu met if szNOM est nulle alors
MessageBox(0,"messagebox vide","titre_de_la_messagebox",MB_OK);

Commentaire de NitRic le 14/05/2003 02:23:06

Pour commencer, ton char de 'reception' est très très limité, 20 caractères, c pas beaucoup même à chier(désolé mais c'est vrai), ensuite pour pouvoir récupérer tout le texte du EditBox il te faut connaître le nombres de caractères ou sinon assigner suffisament de mémoire pour stocker le tout, un EditBox sous 98 et moin peut contenir 65 000 caractères environ et sous 2k et plus c'est presque infini alors ... pour terminer, tout mon code ne montre pas seulement à récupérer le texte d'un EditBox mais aussi à créer une fenêtre, un bouton et un EditBox. Mon code vérifie aussi, comme tu as dis, si le EditBox contient bien quelques choses ou non.

Avant de poster des messages du genre la prochaine fois, repense y à 2 fois ok? Mon code est correct et le tient comme tu as dis ne gère pas les EditBox vide alors la prochaine fois hein! Ho! Aussi, ma fênêtre n'est pas un Dialog ...


~(.:: NitRic ::.)~

Commentaire de Sanke le 05/12/2003 20:41:36

NitRic, tu dis qu'on peut mettre 65000 caractères dans une edit box voir une infinité mais peux-tu me dire comment parce que les miennes ne peuvent contenir au maximum que 30000 caractères et ton exemple aussi !!!
Bon je sais pour le moment je n'ai pas 30k à mettre dedans mais si ca arrivait j'aimerais avoir la réponse !!! :)
Merci à toi !!!

Commentaire de krokro6 le 20/07/2005 23:50:51

MERCI BEAUCOU P :D

Commentaire de Vorms le 16/10/2007 22:00:21

Salut,
J'aimerais bien que l'editBox soit au dessus des autres objets de la fenêtre.
J'ai mis WS_EX_TOPMOST mais cela ne fait rien.

Et surtout j'ai ajouté WS_EX_DLGMODALFRAME au style pour avoir le bouton ok dans le titre.
Comment je peux faire pour tester si on a appuyer sur le bouton ?

Merci beaucoup pour votre aide

Thierry

 Ajouter un commentaire


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&#232;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&#233;&#233; 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&#233; faire apparaitre une fen&#234;tre avec un gros bouton "Quitter" au milieu . Mais rien ne marche , m&#234;me pas l'affichag C vers Interface windows [ par Piolo ] Salut, je travail sous visual Studio .Net, J'ai r&#233;alis&#233; 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 &#224; 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 &#224; tous, Je voudrais savoir comment programmer une fen&#234;tre Windows de base en C++, cad encapsul&#233; dans une classe (mais pas de MF


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,154 sec (4)

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