I finally managed to change my engine to support multiple user-created windows. The main window is created by the engine (But an event can be handled by the client before the creation to change the initialization parameters of the main window), but the client can create more sub-windows if he chooses. If the user presses alt-enter to enter full-screen mode, the state of the sub-windows is saved and restored once the main window exits full-screen mode. When using full-screen mode with multiple windows in the background, the frame rate drops significantly. This is a bug and will be fixed soon.