2017-05-09 112 views
0

我创建了一个例子,其中我有2个窗口同时打开,并且window1无法在window2打开时处理事件。我改变了当前窗口的颜色来说明它的工作原理(当我移动鼠标时,window1打开,window2变得更绿,更绿)。但即使window1不能处理窗口2打开时的事件,我仍然不能改变window1的位置。我想不能做到这一点。开发SFML框架

#include <SFML/OpenGL.hpp> 
#include <SFML/Window.hpp> 
#include <SFML/Graphics.hpp> 

using namespace std; 

sf::Event event; 

int main() 
{ 
    sf::RenderWindow window1(sf::VideoMode(600, 600), "Window1"); 
    sf::RenderWindow window2(sf::VideoMode(300, 300), "Window2"); 

    int r=0,g=0; 
    while (window1.isOpen()) 
    { 

     if(window2.isOpen()==false) 
      while (window1.pollEvent(event)) 
      { 
       if (event.type == sf::Event::Closed) 
        window1.close(); 
       r=(r+1)%255; 
      } 
     else 
     { 
      while (window2.pollEvent(event)) 
      { 
       if (event.type == sf::Event::Closed) 
        window2.close(); 
       g=(g+1)%255; 
      } 
     } 
     window1.clear(sf::Color(r,0,0)); 
     window1.display(); 


     window2.clear(sf::Color(0,g,0)); 
     window2.display(); 
    } 

    return 0; 
} 

我该怎么做?

回答

0

没有在SFML直接功能,这(虽然我希望有可能使用特定于平台的代码),但有几个变通的:

  1. 改变窗口风格SF ::风格::没有。这很简单快捷,但是可以删除标题栏和窗口边框,这些可能不需要。
  2. 通过手动设置每个渲染的位置或检查位置变化并颠倒它来强制窗口位置。