F
Hallo,
ich will mir einen Pluginmanager basteln, damit meine Plugin in der Lage sind, miteinander zu kommunizieren. Ich weiss allerdings nicht, wie man so einen Manager implementieren kann. Der Anlass sind 2 Probleme:
Situation 1:
Ich habe im Moment 2 Plugins. Das eine kümmert sich um verschiedene Render- API's und das zweite kümmert sich um verschiedene GUI - Toolkits (wobei das nicht ganz richtig ist, da es sich im Moment nur um die Kapselung der Win32 API handelt). Jetzt braucht der Konstruktor allerdings das HWND des Fensterplugins. Das Problem ist nun, dass das HWND nur in der Pluginklasse und nicht in der abstrakten Basisklasse definiert sein darf, weil ein HNWD Winapi eigen ist. Demzufolge brauche ich erst einen dynamic_cast, um auf die getmethode für das HWND zuzugreifen und das Renderplugin objekt zu erstellen.
Fazit: das ist scheisse.
Situation 2:
Jedes Renderplugin muss in der Nachrichtenschleife des Fensters die Rendermethoden aufrufen, die in den Renderplugins implementiert sind. Aber natürlich wissen die beiden Klassen nicht voneinander. Also muss ich es irgendwie hinkriegen, dass die Pluginklassen sich "unterhalten können". Das würde glaub ich auch Situation 1 angenehmer gestalten.
Nun zu dem Problem:
Mein PluginManager müsste nun in der Lage sein, für jeden Klassentyp instanzen in einen Vektor zu speichern. Aber ich weiss weder, wie ich ermitteln kann, von welchem Objekt die Instanz ist, noch wie ich die unterschiedlichen Objekte handeln soll. Vielleicht kann mir da einer mal Auskunft geben.
Gruß Sebastian