CEdit Feld aus einem Arbeits Thread verwenden



  • Hallo,
    ich habe folgendes Problem:
    ich verwende einen Dialog mit einem CEdit Feld zum Daten ein- und ausgeben. Derselbe Dialog startet auch einen Arbeitsthread. Dieser Arbeitsthread soll in dieses CEdit Feld Daten schreiben. Über den LPVOID Parameter beim Threadaufruf soll das CEdit Feld (als Zeiger oder so) übergeben werden.
    Bisher habe ich es noch nicht geschaft, dass der Thread auf das CEdit Feld zugreift.
    Kann mir jemand helfen ???

    Gruss
    B J



  • ungefähr so könnt's gehen:

    ...
    ...
    void ThreadFunc (CEdit *edit)
    {
       edit->SetWindowText ("Hello from thread");
       ...
       ...
    
    ...
    ...
    DWORD tid;
    HANDLE hthread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, (LPVOID)&dein_cedit_object, 0, &tid); 
    ...
    ...
    


  • Hallo,
    Windowpointer an Threads zu übergeben sollte man möglichst vermeiden.
    Besser das Handle übergeben und sich mit FromHandle einen (möglicherweise temporären) CWnd* besorgen,oder mit Attach() Detach() an ein Objekt der exakten Klasse "binden".
    Windowpointer an Threads zu übergeben ist sehr brisant und scheitert sehr oft an einem der 1 Millionen ASSERT´s im MFC Quellcode.

    MfG Spacelord 😉


Anmelden zum Antworten