Thread: CREATING A cwindows Calculator GUI

  1. #1
    Registered User datainjector's Avatar
    Join Date
    Mar 2002
    Posts
    356

    CREATING A cwindows Calculator GUI

    Hi , I am new to windows API using C to implement this API ..


    Here is the code i will explain the problem right after this :

    Code:
    #include <windows.h>
    
    #define ID_EDIT 9000
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = TEXT ("HelloWin") ;
         HWND         hwnd ;
         MSG          msg ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetSysColorBrush(COLOR_3DFACE) ;
         wndclass.lpszMenuName  = NULL ;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
         hwnd = CreateWindow (szAppName,                  // window class name
                              TEXT ("Calculator"), // window caption
                              WS_OVERLAPPEDWINDOW,        // window style
                              CW_USEDEFAULT,              // initial x position
                              CW_USEDEFAULT,              // initial y position
                              299,              // initial x size
                              300,              // initial y size
                              NULL,                       // parent window handle
                              NULL,                       // window menu handle
                              hInstance,                  // program instance handle
                              NULL) ;                     // creation parameters
         
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ;
         
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         HDC         hdc ;
         PAINTSTRUCT ps ;
         RECT        rect ;
    	 HWND		 editHwnd; 
    	 char		*sName[3] = {"backspace", "CE", "C"}; 
    	 int	i = 1;
         
         switch (message)
         {
         case WM_CREATE:
    		editHwnd = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_READONLY ,
    				10, 10, 270, 20, hwnd, (HMENU) ID_EDIT,
    				NULL, NULL);
    		for (  i = 1; i < 4 ; i++ )
    		{
    			
    			CreateWindow( "button", sName,    
    		             WS_VISIBLE | WS_CHILD ,
    		             20 *  i  , 50, 80, 25,        
    		             hwnd, (HMENU) i, NULL, NULL);    
    
    
    		}
    
    		
    
    
             
              return 0 ;
    
         case WM_DESTROY:
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }

    Okay as you have noticed i would like to display the first 3 buttons on the normal windows Calculator GUI .. thou this isnt happening .. it dosnt display any button .. I know the X , Y positions arnt well thought out .. thou once i get them to display ill work on those ..


    Thanks

    K
    "I wish i could wish my wishs away"

    "By indirections find directions out" -- William Shakespears

    "Do what thou wilt shall be the whole of the law" -- Crowley "THE BEAST 666"

    Mizra -> love = Death...
    RDB(Rocks yooo)..

    http://www.cbeginnersunited.com

    Are you ready for the Trix ???

  2. #2
    Registered User
    Join Date
    Mar 2005
    Location
    Mountaintop, Pa
    Posts
    1,058
    A fix for one obvious issue:

    Chang this
    Code:
    for (  i = 1; i < 4 ; i++ )
    		{
    			
    			CreateWindow( "button", sName,    
    		             WS_VISIBLE | WS_CHILD ,
    		             20 *  i  , 50, 80, 25,        
    		             hwnd, (HMENU) i, NULL, NULL);    
    
    
    		}
    To this
    Code:
    for (  i = 0; i < 3 ; i++ )
    		{
    			
    			CreateWindow( "button", sName[i],    
    		             WS_VISIBLE | WS_CHILD ,
    		             20 *  i  , 50, 80, 25,        
    		             hwnd, (HMENU) i, NULL, NULL);    
    
    
    		}

  3. #3
    Registered User datainjector's Avatar
    Join Date
    Mar 2002
    Posts
    356

    still dosnt work

    I notice the silly mistake .. Its been a while since i did any C so i guess i am sort of rusty ..
    thou even after using the index for the array .. the buttons dont display ..
    Code:
    #include <windows.h>
    
    #define ID_EDIT 9000
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         static TCHAR szAppName[] = TEXT ("HelloWin") ;
         HWND         hwnd ;
         MSG          msg ;
         WNDCLASS     wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetSysColorBrush(COLOR_3DFACE) ;
         wndclass.lpszMenuName  = NULL ;
         wndclass.lpszClassName = szAppName ;
    
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
         hwnd = CreateWindow (szAppName,                  // window class name
                              TEXT ("Calculator"), // window caption
                              WS_OVERLAPPEDWINDOW,        // window style
                              CW_USEDEFAULT,              // initial x position
                              CW_USEDEFAULT,              // initial y position
                              299,              // initial x size
                              300,              // initial y size
                              NULL,                       // parent window handle
                              NULL,                       // window menu handle
                              hInstance,                  // program instance handle
                              NULL) ;                     // creation parameters
         
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ;
         
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         HDC         hdc ;
         PAINTSTRUCT ps ;
         RECT        rect ;
    	 HWND		 editHwnd; 
    	 char		*sName[3] = {"backspace", "CE", "C"}; 
    	 int	i = 0;
         
         switch (message)
         {
         case WM_CREATE:
    		editHwnd = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_READONLY ,
    				10, 10, 270, 20, hwnd, (HMENU) ID_EDIT,
    				NULL, NULL);
    		for (  i = 0; i < 3 ; i++ )
    		{
    			
    			CreateWindow( "button", sName[i],    
    		             WS_VISIBLE | WS_CHILD ,
    		             20 * i , 50, 80, 25,        
    		             hwnd, (HMENU) i, NULL, NULL);    
    
    
    		}
    
    		
    
    
             
              return 0 ;
    
         case WM_DESTROY:
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    "I wish i could wish my wishs away"

    "By indirections find directions out" -- William Shakespears

    "Do what thou wilt shall be the whole of the law" -- Crowley "THE BEAST 666"

    Mizra -> love = Death...
    RDB(Rocks yooo)..

    http://www.cbeginnersunited.com

    Are you ready for the Trix ???

  4. #4
    Registered User
    Join Date
    Mar 2005
    Location
    Mountaintop, Pa
    Posts
    1,058
    Your child windows are overlapping....

    Change this:

    Code:
    CreateWindow( "button", sName[i],    
    		             WS_VISIBLE | WS_CHILD ,
    		             20 * i , 50, 80, 25,        
    		             hwnd, (HMENU) i, NULL, NULL);
    to this:

    Code:
    	CreateWindow( "button", sName[i],    
    		             WS_VISIBLE | WS_CHILD ,
    		             (100 * i), 50, 80, 25,        
    		             hwnd, (HMENU) i, NULL, NULL);

  5. #5
    Registered User datainjector's Avatar
    Join Date
    Mar 2002
    Posts
    356
    nope that dosnt seem like the problem
    ....
    "I wish i could wish my wishs away"

    "By indirections find directions out" -- William Shakespears

    "Do what thou wilt shall be the whole of the law" -- Crowley "THE BEAST 666"

    Mizra -> love = Death...
    RDB(Rocks yooo)..

    http://www.cbeginnersunited.com

    Are you ready for the Trix ???

  6. #6
    The superhaterodyne twomers's Avatar
    Join Date
    Dec 2005
    Location
    Ireland
    Posts
    2,273
    Works fine for me... (with Bob's dimensions).

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Help creating multiple text files
    By Tom Bombadil in forum C Programming
    Replies: 19
    Last Post: 03-28-2009, 11:21 AM
  2. Error in creating socket in a client (UDP)
    By ferenczi in forum Networking/Device Communication
    Replies: 2
    Last Post: 11-27-2008, 11:11 AM
  3. Profiler Valgrind
    By afflictedd2 in forum C++ Programming
    Replies: 4
    Last Post: 07-18-2008, 09:38 AM
  4. creating an application
    By Cpro in forum C++ Programming
    Replies: 21
    Last Post: 05-30-2008, 12:21 AM
  5. Help creating lists of pointers
    By The_Kingpin in forum C Programming
    Replies: 2
    Last Post: 12-11-2004, 08:10 PM