Hallo, ich habe ein Programm geschrieben, bei dem, wenn man aufs 'X' drückt, um das Fenster zu schließen, ein weiteres Fenster geöffnet werden soll. Ich habe eine Klasse, die sich um das Rendern der Texturen kümmert, eine main-Methode, die sich um die Hauptfunktionen des Programms kümmert, also auf Benutzereingaben reagiert, und eine Klasse namens CWindow, die die einzelnen Fenster verwalten soll, also neue Fenster erstellen usw.
Wenn ich jetzt das Programm starte, wird das erste Fenster ganz normal angezeigt. Wenn ich dann aufs 'x' drücke öffnet sich wie gewünscht ein weiteres Fenster. Jetzt will ich eigentlich, dass sich wieder ein weiteres Fenster öffnet, wenn ich aufs 'X' von einem der beiden Fenster drücke. Es tut sich dann allerdings gar nichts.
Der Code für CWindow und Main folgt:
Die Klasse CWindow:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include <SDL2\SDL.h>
#include "Window.hpp"
#include "Texture.h"
#include <string>
#include <iostream>
#include <cstdlib>
#include <time.h>
// KONSTRUKTOR
CWindow::CWindow(std::string file)
{
// SDL initialisieren //
SDL_Init(SDL_INIT_EVERYTHING)
atexit(SDL_Quit);
// Fenster erstellen
SDL_Window* window = SDL_CreateWindow("Bastard Popup", 20, 30, 1300, 700, SDL_WINDOW_SHOWN);
// Renderer initialisieren
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
// Startbildschirm anzeigen
Draw(renderer, file);
}
// Überprüfen, ob 'X' gedrückt wurde, also ob der User das Fenster schließen will
bool CWindow::xWurdeGedrueckt()
{
if (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
{
return true;
}
return false;
}
return false;
}
|
Und die Main-Methode:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include "Texture.h"
#include "Window.hpp"
#include <iostream>
#include <SDL2\SDL.h>
#undef main
int main()
{
// VARIABLEN
int actualNumber = 1; // Aktuelle Anzahl an Fenstern
const int FensterMax = 5; // Maximal Anzahl an Fenstern
//Neuen Speicher für Fenster reservieren
CWindow *Fenster[FensterMax];
// Neues Fenster anlegen (Startfenster)
Fenster[0] = new CWindow("Anfang.bmp");
bool running = true;
while (running)
{
for(int i = 0; i < actualNumber; i++)
{
if (Fenster[i]->xWurdeGedrueckt()) // Wenn 'X' im Fenster gedrueckt wurde
{
Fenster[actualNumber] = new CWindow("Slogan.bmp"); // Neues Fenster öffnen
}
}
}
}
|
Ich glaube, dass der Fehler eigentlich ganz offensichtlich ist, aber ich find ihn einfach nicht. Ich wäre wirklich sehr dankbar, wenn mir jemand dabei helfen könnte.
Mfg
Typ