从另一个函数控制RenderWindow

时间:2013-03-22 19:26:49

标签: c++ window render sfml

这可能听起来像一个非常简单的问题,但我有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控制'App'。有什么我必须做的吗?谢谢

waco001

1 个答案:

答案 0 :(得分:1)

将您的renderwindow作为参数传递给函数,如下所示:

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

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

然后在main

中调用该函数
printmessage(atmainmenu,app);