Thread: edit box affecting displaying of text?

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    yes, I'm registered!!! algi's Avatar
    Join Date
    Nov 2004
    Location
    Ipswich
    Posts
    161

    edit box affecting displaying of text?

    Basically i had a problem before where is i called i function by a button and then deleted the button there would be a problem when i try and write text over where the old button used to be. I solved that by using ShowWindow() instead of DestroyWindow(). But now in the function if i create a button or edit box, the problem happens again.

    In the code below delete the edit box creation in the function and the problem goes, but how can i solve this text not appearing properly.

    Code:
    #include <windows.h>
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    HINSTANCE hInstGlobal;
    
    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) GetStockObject (WHITE_BRUSH);
    
        /* 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 */
               "Windows App",       /* 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;
    }
    
    
    HWND hButton, hName;
    
    
    void buttonpressed(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         
         HDC hdc;
         
         hdc = GetDC (GetParent((HWND) lParam));
         HFONT font;
         PAINTSTRUCT ps;
         font = CreateFont(30, 0, 0, 0,
                               FW_NORMAL, FALSE, FALSE, FALSE,
                               ANSI_CHARSET, OUT_DEFAULT_PRECIS,
    		         CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
    		         DEFAULT_PITCH | FF_ROMAN,
    			"Times New Roman");
    
            SelectObject(hdc, font);
            TextOut(hdc, 10, 10, "When i delete a button the text cannot be seen!", 47);
            DeleteObject(font);
    
    	EndPaint(hwnd, &ps);
    
    hEdit = CreateWindow ("BUTTON", "Now i'm here the text doesn't show properly",
                                         WS_CHILD | WS_VISIBLE |
                                         BS_PUSHBUTTON,
                                         100, 100, 140, 20,
                                         hwnd, (HMENU) 2,
                                         hInstGlobal, NULL);
    	
    	
    	
    }
    
    
    
    /*  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:
                 hButton = CreateWindow ("BUTTON", "Press Me",
                                         WS_CHILD | WS_VISIBLE |
                                         BS_PUSHBUTTON,
                                         10, 10, 140, 20,
                                         hwnd, (HMENU) 1,
                                         hInstGlobal, NULL);
                 
                 return 0;
            case WM_COMMAND:
                 if (HIWORD(wParam) == BN_CLICKED)
                 {
                      if (LOWORD(wParam) == 1)
                      {
                           ShowWindow(hButton, SW_HIDE);
                          
                           
                           
                           buttonpressed(hwnd, message, wParam, lParam);
                            DestroyWindow(hButton);
                           return 0;
                           }
                           return 0;
                           }
                      return 0;
                 
            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;
    }
    Ps. Sorry if there are any errors, I had to write this in the libruary where there are no compilers and where the internet connection is slow.
    Last edited by algi; 05-03-2005 at 09:41 AM.
    I started out with nothing and I still have most of it left.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. How to use FTP?
    By maxorator in forum C++ Programming
    Replies: 8
    Last Post: 11-04-2005, 03:17 PM
  2. find if text in edit box has been changed
    By willc0de4food in forum Windows Programming
    Replies: 13
    Last Post: 09-10-2005, 10:47 PM
  3. Capture Enter key press in EDIT Box
    By richiev in forum Windows Programming
    Replies: 4
    Last Post: 07-14-2005, 12:03 AM
  4. Edit Box Questions PT. II
    By Quantrizi in forum Windows Programming
    Replies: 16
    Last Post: 08-12-2003, 10:42 PM
  5. Outputting String arrays in windows
    By Xterria in forum Game Programming
    Replies: 11
    Last Post: 11-13-2001, 07:35 PM