Wenn ich die Funktion außerhalb des Threads aufrufe wird die Adresse des Listenelementes (CListCtrl) korrekt an die Funktion übergeben. Das ich innerhalb einer Thread-Funktion keine Membervariablen bearbeiten kann ist mir bekannt. Deshalb hab ich ja auch die zusätzliche nicht statische Funktion ThrRun() hinzugefügt aber aus irgendeinem Grund klappt das da auch nicht. Könnt ihr mir helfen woran das liegen könnte?
Ich nochmal. Wär super wenn mir da einer auf die schnelle helfen könnte. Steh nämlich im Moment so bißchen aufm Schlau und komm nicht weiter bevor das nicht läuft...... Danke.
Das ich innerhalb einer Thread-Funktion keine Membervariablen bearbeiten kann ist mir bekannt
wie rufst du die threadfunktion auf...
an sonsten müsstest du auf die members zugreifen können wenn du als parameter this mit übergeben hast...
C++:
CPB_ToolView* pDlg = (CPB_ToolView*) pParam;
hier hast du ja schon nen gecasteten pointer... mit pDlg->member müsstest du eigentlich zugriff haben... ich vermute mal das er dein cast nach in nicht mag, weis es aber nich genau hab ich so noch nicht probiert... -- ...fleißig wie zwei WeißbroteDieser Post wurde am 13.12.2004 um 12:14 Uhr von Windalf editiert.
in m_ListFilterAnalyse nix drin steht : ( hWnd=0x00000000); keine Adresse übergebe ich den Pointer außerhalb der thread - Funktion kennt er die Adresse und übergibt Sie. Er weiß also in:
C++:
UINT CPB_ToolView:: Thread(LPVOID pParam)
und
C++:
void CPB_ToolView::thrRun(int* pFlag)
mit m_ListFilterAnalyse nix anzufangen. Muß ich mir die Adresse irgenwie nochmal von Hand besorgen? Alle Funktionen befinden sich übrigens in der View - Klasse des Hauptfensters.
Habs jetzt anders gelöst. Hab einen globalen Pointer auf das Objekt m_ListFilterAnalyse angelegt dann brauch ich die Addresse nicht mehr beim Aufruf der Funktion übergeben. So kann ich jederzeit die Liste füllen. Trotzdem danke für deine Hilfe.
bin immer offen für bessere Lösungen aber ich versteh nicht warum das am Thread - Aufruf liegen soll. Habe &m_Flag an den Thread übergeben um ihn aus dem Hauptthread heraus starten und stoppen zu können. Wie mach ich das denn dann wenn ich den this-Zeiger übergebe?
void CDeinDlg::_richtigerThread() { ... // hier kannst dann ganz normal auf alle members der klasse zugreifen // eventuell musste aber einiges mit CriticalSection's absichern ... }