Probleme beim Yield-Aufruf
-
Hallo Community,
ich habe ein Programm in welchem ich in verschiedenen Bereichen den wxYield() aufrufe mit dem Parameter (onlyIfNeeded = true).
Jetzt habe ich das Problem das wenn der wxYield(true) von einer Stelle aus aufgerufen wird und die Yield-Schleife schon läuft er dennoch den 'wxLog::Suspend()' ausführt und anschließend aus der 'Yield(true)-Funktion' rausfliegt weil er ja die Schleife noch ausführt. Das führt dazu das im 'Suspend()' der Wert von 'ms_suspendCount' erhöht wird, er aber nicht durch 'Resume()' wieder freigegeben wird.
Ich poste mal die die Zeilen aus der 'app.cpp' zu finden ab Zeile 692
// .. #if wxUSE_LOG // disable log flushing from here because a call to wxYield() shouldn't // normally result in message boxes popping up &c wxLog::Suspend(); #endif // wxUSE_LOG if ( s_inYield ) { if ( !onlyIfNeeded ) { wxFAIL_MSG( wxT("wxYield called recursively" ) ); } return false; } s_inYield = true; // .. // #if wxUSE_LOG // let the logs be flashed again wxLog::Resume(); #endif // wxUSE_LOG s_inYield = false;
Nun ergibt sich für mich daraus folgendes Problem, wenn ich versuche eine Message über 'wxLogError(..)' oder 'wxLogMessage(..)' auf den Bildschrim zu kriegen erhalte ich Diese nicht, weil der Wert von 'ms_suspendCount' nicht auf 0(Zahl:Null)steht.
Aus der 'log.h' Datei Zeile 145:
static void FlushActive() { if ( !ms_suspendCount ) { wxLog *log = GetActiveTarget(); if ( log ) log->Flush(); } }
Ich arbeite mit der wxWidgets Version 2.8.12. unter Windows im Microsoft Visual Studio 2008 Prof. Und in meiner Setup-Datei steht der für 'wxUSE_LOG' auf 1.
Habe ich noch irgendwie die möglichkeit meine Nachricht auf dem Schirm zu bekommen. Ohne die 'wxUse_Log' auszuschalten !?