Thread: Window does not work.

  1. #1
    1479
    Join Date
    Aug 2003
    Posts
    253

    Window does not work.

    I am creating a window with the Dev-C++ compiler. I know that the code for this comes built in but I learn better if I type it out. The thing is, after I copied it and created a new project, deleted the code and inserted my own....it compiled but the window did not show up. Is this normal? Here is the code I copied:
    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";
    
    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 windows class */
      
      /* The Windows Sturcture */
      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.lpszMenuName = NULL;                       /* No Menu */
      wincl.cbClsExtra = 0;                            /* No extra bytes after the windows class */
      wincl.cbWndExtra = 0;                            /* Structure or the window instance */
      
      /* Use windows's default background color */
      wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
      
      /* Register the window class, 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 */
             "My Cute Window",             /* Window Title */
             WS_OVERLAPPEDWINDOW,       /* default window */
             CW_USEDEFAULT,             /* Windows decides the position */
             CW_USEDEFAULT,             /* where the program is at on the screen */
             544,                       /* Program width */
             375,                       /* the height in pixels */
             HWND_DESKTOP,              /* The window is a child window of the 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() return 0 */
      while (GetMessage (&messages, NULL, 0,0))
      {
            /* Translate virtual-key message into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowsProcedure */
            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_DESTROY:
                        PostQuitMessage(0);           /* send a WM_QUIT to the message queue */
                        break;
                   default:                           /* For messages we done deal with */
                           return DefWindowProc (hwnd, message, wParam, lParam);
            }
       return 0;
    }
    Last edited by RealityFusion; 10-04-2005 at 12:03 PM.
    Knowledge is power and I want it all

    -0RealityFusion0-

  2. #2
    Registered User Dante Shamest's Avatar
    Join Date
    Apr 2003
    Posts
    970
    RegisterClassEx is failing because you didn't initialize the hCursor member of WNDCLASSEX. Add this line.

    Code:
    wincl.hCursor = LoadCursor(NULL,IDC_ARROW);
    When using a struct, it's usually a good idea to make sure you initialize the struct to 0.

    Code:
    WNDCLASSEX wincl = {0};
    Edit: Changed hThisInstance to NULL.
    Last edited by Dante Shamest; 10-04-2005 at 12:42 PM.

  3. #3
    1479
    Join Date
    Aug 2003
    Posts
    253
    Well I added the code and it still didn't work. After playing around with it for a while I finally figured out why it wasn't working and why I was getting the Permission denied error. When I saved the project I overwrote a previous project. So this time I just saved it and renamed it something unique and it worked fine. Does anyone know why, when you save over a project, you get the permission denied error?!?!
    Knowledge is power and I want it all

    -0RealityFusion0-

  4. #4
    Reverse Engineer maxorator's Avatar
    Join Date
    Aug 2005
    Location
    Estonia
    Posts
    2,318
    Well, I use Dev-C++ too, but I don't have problems with overwriting projects...

  5. #5
    Registered User Queatrix's Avatar
    Join Date
    Apr 2005
    Posts
    1,342
    Sometimes if your program didn't close properly, (In the sence as in, the widow disappeared but the program for some reason was still running in the bg.) Then when Dev-C++ tries to write over the running application, it can't, and gets the "permission denied" error.

  6. #6
    Reverse Engineer maxorator's Avatar
    Join Date
    Aug 2005
    Location
    Estonia
    Posts
    2,318
    Well, for me, Dev-C++ doesn't let me press compile at all, when my program is still running in bg. Then I close my program from the task manager.

  7. #7
    Registered User Queatrix's Avatar
    Join Date
    Apr 2005
    Posts
    1,342
    >> Well, for me, Dev-C++ doesn't let me press compile at all,

    It only does that if you started the program through Dev-C++.
    It won't if you start it through something else.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Fixed window size
    By The Brain in forum Windows Programming
    Replies: 5
    Last Post: 02-23-2006, 03:07 PM
  2. My Window Class
    By Epo in forum Game Programming
    Replies: 2
    Last Post: 07-10-2005, 02:33 PM
  3. opengl help
    By heat511 in forum Game Programming
    Replies: 4
    Last Post: 04-05-2004, 01:08 AM
  4. Problem with creating new window, from another window
    By Garfield in forum Windows Programming
    Replies: 6
    Last Post: 01-11-2004, 02:10 PM
  5. How to change window style at runtime?
    By Mr. Bitmap in forum Windows Programming
    Replies: 5
    Last Post: 06-09-2002, 04:49 PM