[gelöst] BEGIN_EVENT_TABLE(myclass,???)
-
Hallo,
ich habe in wxWidgets eine kleine Klasse geschrieben, die sich von keiner wx-Klasse erbt. Diese Klasse nimmt mir viele Schritte die passieren ab und dient zur komunikation zwischen Server und Client. In diesem Falle geht es erst mal nur um die Server Klasse.Ankommene Verbindungen werden bei wxWidgets ja per Event abgearbeitet. EVT_SOCKET ist ja das Zauberwort.
Mein Code schaut in etwas so skiziert aus:
class myApp : public wxApp { bool OnInit() {// lade myFrame} } class myFrame : public wxFrame { wxFrame() { myServer.Init(1234); } } class myServer { Init(port) { // Mache alles was man braucht um Serverarbeit zu verrichten } }
Damit meine Events bei meiner Serverklasse ankommen benötige ich jetzt eine Event-Tabelle.
// Const and var int const SERVER_ID = wxNewId(); int const SOCKET_ID = wxNewId(); // Event Table BEGIN_EVENT_TABLE(myServer, ???) EVT_SOCKET(SERVER_ID, myServer::OnServerEvent) EVT_SOCKET(SOCKET_ID, myServer::OnSocketEvent) END_EVENT_TABLE()
Und jetzt kommt mein Problem. Da wo ??? steht habe ich keine Klasse die ich eintragen kann, weil sich ja mein myServer nicht erbt. Ich hab wxApp und wxFrame versucht:
error C2248: "wxApp::sm_eventTable": Kein Zugriff auf protected Member, dessen Deklaration in der wxApp-Klasse erfolgte. error C2248: "wxFrame::sm_eventTable": Kein Zugriff auf protected Member, dessen Deklaration in der wxFrame-Klasse erfolgte.
Was muss ich tun? Gibt es eine wxKlasse die ich erben und dort reinschreiben kann?
Danke,
Stefan
-
Du musst deine Klasse von wxEvtHandler ableiten, da nur diese Events empfangen können.
-
Super, das geht.
Ich habs mit wxEvent versucht und das geht nicht, aber mitBEGIN_EVENT_TABLE(myServer, wxEvtHandler) EVT_SOCKET(SERVER_ID, myServer::OnServerEvent) EVT_SOCKET(SOCKET_ID, myServer::OnSocketEvent) END_EVENT_TABLE() class myServer : public wxEvtHandler { Init(port) { // Mache alles was man braucht um Serverarbeit zu verrichten } }
gehts.
Danke.