Ich programmiere gerade an einer Klasse in einem dialogbasierten VS C++ Programm. Nun benötige ich in dieser Klasse ein Thread, dass auf Variabel zugreifen (lesen/schreiben) kann.
Aber ich bringe es einfach nicht her. :-( Ich weiss nicht, was ich noch falsch mache.
Code-Ausschnitt (letzter Stand):
Header-Datei:
C++:
class CMotorSteuerung : public CWnd { // Konstruktion public: static UINT myThreadProc(LPVOID lParam); // Thread Funktion
//…
private: bool m_bThreadReady; // Thread Status bool m_bOn; // Motor Status (ON/OFF) //…
Bin auf ein neues Problem bei meinem Thread gestossen.
Soweit ist eigentlich alles wunderbar gelaufen. Aber nun sollte ich aus meinem Thread auf Funktionen im MainFrm zugreifen können. Der Compiler meldet keinen Fehler, aber beim ausführen des Programms bekomme ich immer die Meldung:
Unbehandelte Ausnahme im Auto.exe: 0xC0000005: Access Violation.
Kann man im Thread nicht auf MainFrm-Funktionen zugreifen? Oder anders gefragt, was mach ich falsch?
OK, dass mit der zweiten Funktion habe ich auch gemacht. Der Haupteil der Verarbeitung die das Thread macht, löift in einer anderen Funktion, die in myThreadProc() aufgerufen wird.
Aber das Problem mit den MainFrm-Funktionen bleibt ja. :-(
Ich vermute, dass das Problem mit den aufgerufenen von Variabeln im MainFrm zu tun hat. Gebe ich in der 'GetStatus()'einen fixen Wert zurück ('return true') funktioniert der Funktionsaufruf.
mit 'AfxGetMainWnd()->GetStatus();' meldet der Compiller: error C2039: 'GetStatus' : Ist kein Element von 'CWnd'
ja sorry, der gibt dir ein CWnd* das müsste man dann noch casten... aber wenn es funktioniert wenn die funktion einen festen wert zurückgibt, dann mach den rückgabewert doch "const"Dieser Post wurde am 25.07.2008 um 01:15 Uhr von mmc20 editiert.