Es bastante fácil
pero lei que no se puede crear una cola de mensajes desde un thread que no ha sido el creador del window ya que quería poner la cola (el while) en otro thread separado.
Luego cree el window dentro del thread que tiene la cola pero necesito tener acceso al window desde la función main.
Se me ocurrió pasar por parámetro un RenderWindow ** al thread pero tampoco funciona porque en la función main utilizo el puntero antes de que se haya creado el window.
Código
#include <SFML/Graphics.hpp> #include <iostream> #include <thread> using namespace std; using namespace sf; void window_manage(RenderWindow **); int main() { sf::VideoMode desktop = VideoMode::getDesktopMode(); RenderWindow * window = NULL; thread manage(window_manage,&window); manage.detach(); window->setTitle("test"); manage.detach(); cout << "aa"; getchar(); return 0; } void window_manage(RenderWindow ** _window){ sf::RenderWindow window(VideoMode(200,200), "SFML works!"); *_window = &window; while (window.isOpen()){ sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } } }
Resumen: Como asignar la dirección del windows creado a un puntero RenderWindow * pasado por parámetro?
No se si me explico bien.
Saludos
@Edit:
Conseguí hacer lo así:
Código
void manage(RenderWindow *window); int main() { sf::VideoMode desktop = VideoMode::getDesktopMode(); RenderWindow window(VideoMode(200,200),"My first windows with SFLM"); thread _manage(manage,&window); _manage.detach(); while(window.isOpen()){ Event event; while(window.pollEvent(event)){ if(event.type == Event::Closed) window.close(); } } return 0; } void manage(RenderWindow * window){ sleep(milliseconds(1000)); window->setSize(Vector2u(300,300)); }
Pero esto solo me sirve para un window. Para crear mas loops para mas windows?