Hey Leute,
ich versuche gerade ein kleines Spielchen zu programmieren und das ganze in der guten alten Konsole
Nun, ich hab mich in den vergangenen Tagen informiert und bin auf die Funktionen der Überschrift gestoßen. In meiner ersten "Rohfassung" hat auch alles gut funktioniert. Nur wurde nach tausendfachen Einfügen von Code hier und da alles so unübersichtlich, dass ich (was ich eh vor hatte) gerade dabei bin den ganzen Code ein wenig zu strukturieren und in Klassen zu packen (am Anfang war einfach alles in der main
). In Objektorientierung bin ich allerdings noch nicht so geübt.
Jetzt ist die Initialisierung von meinem Konsolenbuffer in der Klasse CFramework und zwar als Funktion Init(). Diese rufe ich in der Klasse CGame mit der Memberfunktion CGame::Init() auf. Diese wird in der main-Funktion aufgerufen. Dank der schönen Fehlerabfrage erfahre ich allerdings, dass sowohl das Erstellen des Buffers, als auch folglich das diesen als aktiven Buffer festlegen scheitert.
Ich hoffe alles ist verständlich, bin für jede Hilfe seeeeehr dankbar
Hier die Klasse CFramework:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#ifndef FRAMEWORK_HPP
#define FRAMEWORK_HPP
#include <windows.h>
#include <iostream>
class CFramework
{
public:
void Init();
private:
HANDLE hStdOut, hBuff;
};
#endif
|
Der Code dazu:
|
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
|
#include "Framework.hpp"
void CFramework::Init()
{
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
hBuff = CreateConsoleScreenBuffer (
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
CONSOLE_TEXTMODE_BUFFER,
NULL);
if (hBuff = INVALID_HANDLE_VALUE)
{
std::cout << "Creating Buffer failed" << std::endl;
exit(-1);
}
if (!SetConsoleActiveScreenBuffer(hBuff))
{
std::cout << "Setting active screen buffer failed" << std::endl;
exit(-1);
}
}
|
Zur Sicherheit noch der Aufruf in Game::Init():
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
void CGame::Init()
{
m_pPlayer = new CPlayer;
m_pFramework = new CFramework;
m_pFramework->Init();
m_bGameRun = true;
}
|
und in der main:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
#include "Game.hpp"
int main ()
{
CGame Game;
Game.Init();
Game.Run();
Game.Quit();
return 0;
}
|
Tut mir Leid für den vielen Code, aber ich möchte nichts Vergessen. Gemecker am (bisher sichtbaren) Code ist natürlich erlaubt und willkommen
Ein paar Daten zum Abschluss:
Compiler: Microsoft Visual C++ 6.0 (ich weiß veraltet, aber ich mags
)
System: Windows Vista
Sollte ich was vergessen haben, bitte melden. Nochmal herzlichen Dank im Voraus