user569322
user569322

Reputation:

SFML won't open a window?

So, as the title suggests, I am trying to create a simple Window using SFML 1.6 in CodeBlocks (MinGW v.4.7.0) on Windows 7 (no, I'm not using an ATI GPU).

This is the code:

#include <SFML/Window.hpp>

int main()
{
    sf::Window App(sf::VideoMode(800, 600, 16), "SFML Window");
    App.Display();

    return 0;
}

Whenever I try to run this code, it just says Program.exe is not responding and has to be shutdown using Close this program. The funny thing is, the first tutorial offered on the SFML tutorial website (the one utilizing sf::Clock in a console) works, so the libraries are loaded properly.

Can someone help me find the cause of the error I'm getting?

Other than the crash, I get no compiler or application errors.

Upvotes: 1

Views: 2630

Answers (2)

Abraham
Abraham

Reputation: 9865

For those who want the whole thing, this is a snippet extracted from the SFML website.

#include <SFML/Window.hpp>

int main()
{
    sf::Window window(sf::VideoMode(800, 600), "SFML Window");

    // run the program as long as the window is open
    while (window.isOpen())
    {
        // check all the window's events that were triggered since the last iteration of the loop
        sf::Event event;
        while (window.pollEvent(event))
        {
            // "close requested" event: we close the window
            if (event.type == sf::Event::Closed)
                window.close();
        }
    }    

    return 0;
}

You will get:

Upvotes: 0

Mark Garcia
Mark Garcia

Reputation: 17708

The problem is that you haven't created the main loop which polls for events and handles OS messages. Append this to main() (yes, this is a snippet from the SFML documentation):

while (App.IsOpened())
{
   // Process events
   sf::Event Event;
   while (App.GetEvent(Event))
   {
      // Close window : exit
      if (Event.Type == sf::Event::Closed)
         App.Close();
   }

   // Clear the screen
   App.Clear();

   // Put your update and rendering code here...

   // Update the window
   App.Display();
}

It is therefore not necessary for you to call App.Display() after you create the window.

Upvotes: 1

Related Questions