View Full Version: Get text and post it when a button is pushed

C++ Learning Community > win32 api C++ programming > Get text and post it when a button is pushed


Title: Get text and post it when a button is pushed
Description: Example


dr voodoo - June 29, 2003 08:14 PM (GMT)
Here's the code
CODE
#include <windows.h>

//We define the ID of all our stuff
#define Edit_ID     1
#define Static_ID   2
#define Button_ID   3

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpszArgument,
                   int nFunsterStil)

{
   HWND hwnd;               /* This is the handle for our window */
   MSG messages;            /* Here messages to the application are saved */
   WNDCLASSEX wincl;        /* Data structure for the windowclass */

   /* The Window structure */
   wincl.hInstance = hThisInstance;
   wincl.lpszClassName = szClassName;
   wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
   wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
   wincl.cbSize = sizeof (WNDCLASSEX);

   /* Use default icon and mouse-pointer */
   wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
   wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
   wincl.lpszMenuName = NULL;                 /* No menu */
   wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
   wincl.cbWndExtra = 0;                      /* structure or the window instance */
   /* Use Windows's default color as the background of the window */
   wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

   /* Register the window class, and if it fails quit the program */
   if (!RegisterClassEx (&wincl))
       return 0;

   /* The class is registered, let's create the program*/
   hwnd = CreateWindowEx (
          0,                   /* Extended possibilites for variation */
          szClassName,         /* Classname */
          "Hello",       /* Title Text */
          WS_OVERLAPPEDWINDOW, /* default window */
          CW_USEDEFAULT,       /* Windows decides the position */
          CW_USEDEFAULT,       /* where the window ends up on the screen */
          544,                 /* The programs width */
          375,                 /* and height in pixels */
          HWND_DESKTOP,        /* The window is a child-window to desktop */
          NULL,                /* No menu */
          hThisInstance,       /* Program Instance handler */
          NULL                 /* No Window Creation data */
          );

   /* Make the window visible on the screen */
   ShowWindow (hwnd, nFunsterStil);

   /* Run the message loop. It will run until GetMessage() returns 0 */
   while (GetMessage (&messages, NULL, 0, 0))
   {
       /* Translate virtual-key messages into character messages */
       TranslateMessage(&messages);
       /* Send message to WindowProcedure */
       DispatchMessage(&messages);
   }

   /* The program return-value is 0 - The value that PostQuitMessage() gave */
   return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   switch (message)                  /* handle the messages */
   {
       case WM_CREATE:
           //We create all our stuff
           CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
               WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL,
               0, 0, 0, 0, hwnd, (HMENU)Edit_ID, GetModuleHandle(NULL), NULL);
           CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "Put text",
               WS_CHILD | WS_VISIBLE,
               0, 0, 0, 0, hwnd, (HMENU)Button_ID, GetModuleHandle(NULL), NULL);
           CreateWindowEx(WS_EX_CLIENTEDGE, "STATIC", "Hello",
               WS_CHILD | WS_VISIBLE,
               0, 0, 0, 0, hwnd, (HMENU)Static_ID, GetModuleHandle(NULL), NULL);
       break;
       case WM_SIZE:
       {
           //First we get the HWND of all our stuff
           HWND Button=GetDlgItem(hwnd,Button_ID);
           HWND Static=GetDlgItem(hwnd,Static_ID);
           HWND Edit=GetDlgItem(hwnd,Edit_ID);
           //Now we get the new size of our parent window
           RECT window_size;
           GetClientRect(hwnd, &window_size);
           //We update the settings for all our stuff
           SetWindowPos(Button, NULL,
               0, 0, 100, 30,
               SWP_NOZORDER);
           SetWindowPos(Static, NULL,
               100, 0, window_size.right-100, 30,
               SWP_NOZORDER);
           SetWindowPos(Edit, NULL,
               0, 30, window_size.right, window_size.bottom-30,
               SWP_NOZORDER);
       }
       break;
       case WM_COMMAND:
           switch(LOWORD(wParam))
           {
               case Button_ID:
               //First we get the size of the string in the Edit form
               int len = GetWindowTextLength(GetDlgItem(hwnd, Edit_ID));
               //If it containes text
               if(len > 0)
               {
                   //Now get the string
                   char* buf;
                   buf = (char*)GlobalAlloc(GPTR, len + 1);
                   GetDlgItemText(hwnd, Edit_ID, buf, len + 1);
                   //Now we update our static
                   SetDlgItemText(hwnd, Static_ID, buf);
                   //Now we show a popup
                   MessageBox(hwnd,buf,"Hello",MB_OK);
                   //We free our memory
                   GlobalFree((HANDLE)buf);
               }
               else
               //If it doesn't containe any text
               {
                   SetDlgItemText(hwnd, Static_ID, "");
                   MessageBox(hwnd,"No text","Hello",MB_OK);
               }
               break;
           }
       break;
       case WM_DESTROY:
           PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
       break;
       default:                      /* for messages that we don't deal with */
           return DefWindowProc (hwnd, message, wParam, lParam);
   }

   return 0;
}

It shows how to get text from an EDIT and displays it on a STATIC.




* Hosted for free by InvisionFree