Hallo
Ich überlege mir gerade, wie ich am besten ein GUI mit DirectInput realisieren könnte.
Dabei müssen bei jedem Klick alle Buttons und sonstigen klickbaren Elemente überprüft werden.
Ich hatte die Idee, man könnte doch eine Klasse machen, der Buttons als Klassenelemente hinzugefügt werden können.
Man müsste also die Position und die Art des Buttons übergeben.
Soweit so gut, jetzt kommt aber mein eigentliches Problem.
Jeder Button führt ja eine Aktion aus.
Die Funktion des Buttons muss ihm ja auch irgendwie mitgeteilt werden.
Gibt es also irgendwie eine Möglichkeit, den Zeiger auf eine Funktion zu übergeben? Ist das so überhaut sinnvoll, wie ich mir das hier zurechtgelegt habe? Meine Vorstellung ist halt noch ein bisschen wage.
Natürlich bin ich auch für andere Lösungsansätze offen und dankbar!
Vielen Dank im Voraus!
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Hi
Das mit den Pointern könnte funktionieren. Du könntest ein Objekt (z.B. oButton) als Pointer übergeben und anschliessend mit mit dem -> Operator auf die entsprechende Methode zugreifen.
Was für eine GUI Lib verwendest du denn? Es gibt GUI Libs die solche mechanismen bereits zur Verfügung stellen.
Gruss, d-oli
Ich verwende keine GUI Lib, ich möchte das GUI selbst entwickeln.
Es soll aber möglichst vielseitig einsetzbar sein.
Mein Problem ist aber immer noch, wie ich die Funktion integriere.
Ich kann ja nicht für jeden Button eine eigene Klasse mit einer eigenen Methode schreiben.
Es existiert auch nicht schon eine Funktion für alles, was von den Buttons gemacht werden soll.
Einen direkten Zeiger auf die Funktion ist also nicht möglich?
EDIT: Ah sorry, jetzt verstehe ich.
Alle Funktionen in der Button Klasse...
Eigentlich ziemlich offensichtlich :D
Danke!
[Diese Nachricht wurde nachträglich bearbeitet.]
Doch so z.B.:
// Funktion
static void yourFunction( void* pData, const char* pName, const char** pAttributes )
{
// ...
}
// Methoden - Deklaration
// ...
void yourMethod( void ( *pFunctionPointer )( void*, const char* , const char**) );
// ...
ANTWORT AUF EDIT: Ja genau. Kapselung ... ;-)
[Diese Nachricht wurde nachträglich bearbeitet.]