[wxWidgets] Pluginfähige Anwendung und Events
-
Ja das kenne ich zu gut.
Das wxEventSystem ist nicht trivial ...Am besten meldest du dich mal per ICQ bei mir.
Ansonsten kann ich pauschal noch debuggen empfehlen, das hilft nicht immer, aber in manchen Fällen, wird das wxEventProcessing klarer (internals).
-
Vielleicht postest du einfach mal den entsprechenden Code.
Weil so können wir auch nur rumraten.
-
phlox81 schrieb:
Vielleicht postest du einfach mal den entsprechenden Code.
Weil so können wir auch nur rumraten.Hier mal der Code der geänderten Funktion. Wenn noch mehr Code benötigt wird, einfach bescheid sagen...
void MyPlugin::CreateMenu(wxMenuBar *pMenuBar) { wxMenu *pPluginMenu = new wxMenu(); pPluginMenu->Append(1000, wxT("MyPlugin1")); pMenuBar->Append(pPluginMenu, wxT("Plugins")); pMenuBar->Connect( 1000, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyPlugin::OnMenuClicked), NULL, this ); }
@nurf
Kann ich machen, kann aber ein paar Tage dauern...
-
Ähm, ist das denn der richtige Event für Menüs?
-
phlox81 schrieb:
Ähm, ist das denn der richtige Event für Menüs?
Ich denke doch mal schon. Es passier aber auch nichts wenn ich das ganze durch wxEVT_COMMAND_MENU_SELECTED ersetze...
-
guenni81 schrieb:
phlox81 schrieb:
Ähm, ist das denn der richtige Event für Menüs?
Ich denke doch mal schon. Es passier aber auch nichts wenn ich das ganze durch wxEVT_COMMAND_MENU_SELECTED ersetze...
Ja, wxEVT_COMMAND_MENU_SELECTED ist der korrekte event. Was sagt denn der Debugger?
-
phlox81 schrieb:
Ja, wxEVT_COMMAND_MENU_SELECTED ist der korrekte event. Was sagt denn der Debugger?
Ich werden den Debugger mal dazu befragen, kann aber ein bisschen dauern bis ich das Ergebnis habe und mich wieder melden würde.
-
OK, der Debugger sagt eigentlich nur folgendes:
Starting program: /home/guenni/Projekte/PluginApp/debug/src/pluginapp
[Thread debugging using libthread_db enabled]
[New Thread 0xb668d6c0 (LWP 11635)]Program exited normally.
Passieren tut irgendwie absolut gar nix. Es sieht nach wie vor so aus als würde er die Funktion in der dll/so Datei erst gar nicht aufrufen...
-
Hat noch jemand irgendeine Idee wie man das Problem beheben könnte?
-
Kleine Idee:
Du hast als ID die 1000 angegeben, wenn ich das richtig sehe?
Das ist zu niedrig. Der Bereich bis afaik 5000 ist von wxWidgets reserviert. Definiere mal ein enum für die Defines ala:enum MyEnum { ID_WHATEVER + wxID_HIGHEST };
Fällt mir nur so am rande auf :). Aber vllt hilft es.
rya.
-
@Scorcher24
Da wird leider nicht so viel passieren. Hab das ganze schon mit nem Wert von 10000 versucht und das Ergebnis war leider das gleiche...
-
So, nach dem super Plugin Beispiel von Scorcher24 (nochmals vielen Dank hierfür) hab ich mein eigenen versuch nochmals auseinander genommen und endlich den Fehler gefunden warum das ganze nicht funktioniert. Wie es meistens so ist, war es nur eine kleinigkeit. Beim laden der Dynamischen Bibliothek hatte nur ein Detach gefehlt.
lib.Detach();
Nach dem ich dies eingefügt hatte, funktioniert der kleine Beispielversuch für Plugins so wie er eigentlich sollte...
-
Und hier nochmals für alle die es interessiert ein komplettes kleines Beispiel für ein mögliches Plugin System.
http://github.com/guenni81/wxpluginexample