1

这听起来可能是一个非常简单的问题,但我有 SFML 1.6,我想从另一个函数控制我的 RenderWindow...我不太擅长 C++ 或 SFML...:)

////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window.hpp>
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>

using namespace std;



int main()
{

    // Create the main window
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "Guessing Game");
    App.SetFramerateLimit(60); //Set FPS limit to 60 FPS
    //Variables
    bool atmainmenu = true;
    //End Variables

    // Start main loop
    while (App.IsOpened())
    {
        printmessage(atmainmenu);
        // Process events
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App.Close();

            // Escape key : exit
            if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                App.Close();
            if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::M)){

            }
            if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::F)){

            }
        }
        // Display window on screen
        App.Display();

    }
    return EXIT_SUCCESS;
}

void printmessage(bool atmainmenu)
{
    if(atmainmenu){
        //$$$$$$$################# HERE <----
    }
}

那是我的代码,但我想从 atmainmenu 控制“应用程序”。有什么我必须做的吗?谢谢

waco001

4

1 回答 1

1

将您的渲染窗口作为参数传递给函数,如下所示:

void printmessage(bool thing, sf::RenderWindow& app)
{
    app.doSomething();
}

不要忘记以窗口作为参考&

然后调用main中的函数

printmessage(atmainmenu,app);
于 2013-03-22T19:28:45.807 回答