2017-05-09 107 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. 通過手動設置每個渲染的位置或檢查位置變化並顛倒它來強制窗口位置。