Hilfe bei wxYield() funktion benötigt
-
ich hab hier folgenden Code: wie shcon in der Überschrift gesehen, geht es um die wxYield Funktion, die
ich im OnConnect-Event aufrufe. Wenn ich im programm connecte will ich während die verbindung zum server aufgerufne wird weiterarbeiten. wenn ich das wxYield benutze, läuft zwar alles wie geplant, aber dafür funktionieren alle anderen Events nicht mehr, nichmal das wxID_EXIT event funktioniert.
Das Problem liegt warscheinlich darin, daß ich absoluter newby bin, was wxwindows angeht, und nur annähernd verstehe was Yield überhaupt macht
(soweit ich weiss basiert es nicht auf multithreading, sondern ruft quasi in jedem durchgang der Whileschleife die Eventprozedur auf und checked, ob es irgenwelche events prozessen soll.). Das life sample hat mir auch nicht weitergeholfen (soweit ich es sehen kann das einzige sample was Yield benutzt). Und in der Doku steht zwar, daß man statt der wxYield die wxApp::Yield() Funktion benutzen soll, aber wie zum Teufel soll ich den hier auf wxApp zugreifen??? das is doch totaler Müll, wenn ich die gesamten event-funktionen in meine wxApp umschreiben müsste... kann mir das jemand erklären?void mainwindow::Menu(wxCommandEvent& event) { switch(event.GetId()) { case wxID_EXIT: { Close(TRUE); } case IDM_START: { UpdateUI(); break; } case IDM_CONNECT: { UpdateUI(); logwindow->AppendText(wxT("\nconnecting")); while(!worldwindow->connected) { logwindow->AppendText(wxT(".")); wxYield();/*<--!!!!!!!!!!!!!!//*/ ////////////////////hier kommen später wenn das ganze mal funktioniert ///noch ein paar andere Funktionen hinzu } } case IDM_DISCONNECT: { UpdateUI(); } default: break; } } void mainwindow::UpdateUI() { p2ptools->EnableTool(IDM_START, !(worldwindow->running)); p2ptools->EnableTool(IDM_PAUSE, (worldwindow->running)); p2ptools->EnableTool(IDM_CONNECT, !(worldwindow->connected)); p2ptools->EnableTool(IDM_DISCONNECT, (worldwindow-onnected)); } BEGIN_EVENT_TABLE(mainwindow, wxFrame) EVT_TOOL(wxID_EXIT, mainwindow::Menu) EVT_TOOL(IDM_CONNECT, mainwindow::Menu) EVT_TOOL(IDM_DISCONNECT, mainwindow::Menu) EVT_TOOL(IDM_START, mainwindow::Menu) END_EVENT_TABLE()
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Keine direkte Hilfe, aber hast Du es schon im wx-Forum versucht?
Ich hab dort bisher immer eine sinnvolle Antwort erhalten:http://g.yi.org/forum/list.php?f=13
Mit den "pending events" hab ich mich auch schon rumgequält...
-
k, thx, werds versuchen
hab nur gedacht, daß hier mir das eher Leute beantworten könnten, weil 'n paar tausend mehr am Forum teilnehmen
-
Und wieviele von den 1000 haben Ahnung von wxYield
-
: 0
-
immerhin, habs mittlerweile selbst rausgefunden ;)) denke mal, das liegt daran, daß bei mir die Abbruchbedingung in der while-Schliefe fehlt... ich dachte halt, daß die Schleife automatisch unterbrochen wird, wenn mein Menu-Event mithilfe der Yield Funktion erneut aufgerufen wird wirklich verstehen, was die Yield Funktion macht tu ich aber trotzdem noch nicht und hab bis jetz auch keine Antwort vom Forum bekommen hab hald jetz wieder die wxYield() statt die wxApp::Yield() benutzt