AfxBeginThread ??



  • Hi,
    Habe folgenden fehler:

    error C3867: 'CopenfileDlg::Xencryption': function call missing argument list; use '&CopenfileDlg::Xencryption' to create a pointer to member

    Das fehler ist in:

    AfxBeginThread(CopenfileDlg::Xencryption, NULL, 0, 0, 0, NULL);
    

    Das function sieht so aus:

    UINT CopenfileDlg::Xencryption(LPVOID pParam){
    
    //das code
    }
    

    Kann jeman mir helfen 😕


  • Mod

    Diese Funktion müsste statisch sein! Sonst geht es nicht.
    Du kannst auch einfach den Zeiger auf Deine Klasseninstanz an eine neutrale Threadfunktion übergeben die dann die nicht statische Memberfunktion aufruft.



  • static UINT CopenfileDlg::Xencryption(LPVOID pParam);
    
    UINT CopenfileDlg::Xencryption(LPVOID pParam)
    {
    //.....
    inputEdit.GetWindowTextA(Xdata.Xinputfile, 260);
    //.....
    }
    

    Habe nun folgenden fehler:

    error C2228: left of '.GetWindowTextA' must have class/struct/union

    inputEdit ist CEdit member in CopenfileDlg class

    Wo ist das probleme, das fehler ist aufgetretten nach ich die function als static deklariert? 🙄



  • Wo ist das probleme, das fehler ist aufgetretten nach ich die function als static deklariert?

    Wenn du wüsstest was eine static member function ist wüsstest du wo das Problem ist. Lern C++ 🙄 🙄



  • hustbaer schrieb:

    Wo ist das probleme, das fehler ist aufgetretten nach ich die function als static deklariert?

    Wenn du wüsstest was eine static member function ist wüsstest du wo das Problem ist. Lern C++ 🙄 🙄

    sehr freundlich 👎 , danke ebenfalls 🙂


  • Mod

    @allany2005:
    Ich weiß nicht warum Du Dich beschwerst. Hier geht es nun mal um reine Basics.
    Und Du kannst Dich auf den Kopfstelen: Es sind un bleiben Basics!
    Also lerne C++ und lies ein Buch!

    Wenn AfxBeginThread nimmt eben keinen Zeiger auf eine Memberfunktion einer Klasse sondern nur auf eine normale "statische" Funktion. Und das ist eben keine Memberfunktion.

    Memberfunktionen benötigen immer einen this Zeiger.
    Statische Funktionen aber wiederum können auf nicht statische Klassenmember nicht zugreifen, weil sie eben keinen this Zeiger haben.

    Also Bau Dir eine normale Threadfunktion, an die Du im lParam den Zeiger Deiner Klasse übergibst. In dieser Funktion kannst Du dann den Klassenzeiger nehmen und Deine Memberfunktion aufrufen.

    http://www.mpdvc.de/html.htm#Q18



  • @Martin Richter :

    Das war sehr nett von dir, ich werde tun wie du geschrieben hast.

    MfG


Anmelden zum Antworten