Afficher le texte d'un editbox dans un messagebox()

Soyez le premier à donner votre avis sur cette source.

Vue 11 730 fois - Téléchargée 522 fois

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 / Exemple :


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!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de VB7

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.