minicrispie: C++ GUI

Hallo,

vor kurzem habe ich angefangen, eine eigene GUI in C++ zu schreiben. Das Funktioniert zumindest schon mal ein bisschen. Ich kann schon ein Button hinzufügen, und für diesen die Events verwalten.
Das funktioniert aber nur mit einem Button so gut. Sobald ich mehrere Buttons habe( ich habs mit 2 getestet ), so stürtzt das Programm am Ende ab( also wirklich ganz am Ende des Programmes ).

Folgender Aufbau der GUI( gekürzt ):

  
//Die Klasse verwaltet alles für ein Element  
class _gui_element  
{  
    private:  
        // (alle Valiablen und Strukturen)...  
    public:  
       //Jegliche Methoden  
};  
  
//Diese Klasse ist die Hauptklasse  
class _gui  
{  
	private:  
		int           number;                           //Die Anzahl aller Elemente in der GUI.  
  
	public:  
		_gui_element *elems;                           //Das Element-Array in dem die Eigenschaften aller Elemente stehn  
  
		//Methoden  
	                  _gui         ( void );            //Konstruktor  
		             ~_gui         ( void );            //Destruktor  
		int           createElement( int type );        //Erzeugt ein neues Element  
};  
  
//Die Methoden der Klasse _gui  
_gui::_gui( void )  
{  
	_gui::number          =     0;  
	_gui::elems           =  NULL;  
	_gui::isElementActive = false;  
	_gui::ActiveElementId =    -1;  
}  
  
_gui::~_gui( void )  
{  
	_gui::number          =     0;  
	_gui::isElementActive = false;  
	_gui::ActiveElementId =    -1;  
	//Elemente löschen  
}  
  
int _gui::createElement( int type )  
{  
	int element_id = -1;  
  
	//Prüfen, ob der Typ gültig ist  
	if( type >= 1  &&  type <= 1 ) // Bis jetzt ist es nur ein Element  
	{  
		//Das Array um ein Element erweitern  
		_gui::elems = (_gui_element *) realloc( _gui::elems, ( ( _gui::number + 1 ) * sizeof(_gui_element) ) );  
		if( _gui::elems != NULL )  
		{  
			element_id = _gui::number;             //Die ID übernehmen  
			_gui::elems[element_id].reset( type ); //Eine extra Funktion setzt alle Werte des Elementes zurück, da der Konstruktor irgendwie nicht aufgerufen wird.  
			_gui::number++;                        //Die Anzahl an Elementen erhöhen  
		}  
	}  
  
	//Die ID des Elementes zurückgeben  
	return element_id;  
}  
  
  
/*******************\  
    Hauptfunktion  
\*******************/  
int main()  
{  
	//bool beenden = false;  
  
	int newElem = document.createElement( BUTTON );  
	document.getElementById( newElem ).setBackground( 93, 51, 10 );  
	document.getElementById( newElem ).setPosition( 50, 50 );  
  
	newElem = document.createElement( BUTTON );  
	document.getElementById( newElem ).setBackground( 93, 51, 10 );  
	document.getElementById( newElem ).setPosition( 50, 80 );  
  
	while( !keypressed() ) //while( !beenden )  
	{  
		//...  
	}  
  
	//Selbst hier funktioniert das Programm noch  
	return 0;  
}  

Da das Programm wirklich erst zum Schluss abstürzt( Vista Fehlermeldung: "Das Progarmm funktioniert nicht mehr..." ), denke ich, das es am Destruktor von "_gui" liegt. Nur was mache ich da falsch?
Ich hab schon "delete _gui::elems" und "free( _gui::elems )" versucht. Ich hab das freigeben auch schon weggelassen.
Bzw. mache ich etwas bei der Speicherreservierung( _gui::createElement() ) falsch?

Danke schonmal im voraus!

MfG. Christoph Ludwig

--
Wo die Sprache aufhört, fängt die Musik an...
Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
  1. int newElem = document.createElement( BUTTON );
    document.getElementById( newElem ).setBackground( 93, 51, 10 );
    document.getElementById( newElem ).setPosition( 50, 50 );

    hab ich vergessen:
    Folgendes Makro existiert auch noch:
    #define getElementById(x) elems[x]

    Außerdem wird die GUI global angelegt:

    _gui document;

    MfG. Christoph Ludwig

    --
    Wo die Sprache aufhört, fängt die Musik an...
    Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
    Go to this