EnumWindows Funktion aus Klasse übergeben



  • Hallo,

    ich möchte der Funktion EnumWindows den Zeiger auf eine Funktion übergeben.
    (So wie man es halt macht)

    Das Problem ist nun, dass die zu übergebende Funktion in einer Klasse steht und ich es nicht hinbekomme.
    (Die Funktion EnumWindows wird innerhalb der selben Klasse aufgerufen)

    Die .h Datei:

    class EineKlasse
    {
    
    	BOOL CALLBACK EnumWindowsProc (HWND hwnd, LPARAM l_param); 
    
            //Diese funktion enthält die  EnumWindows Funktion
            void test(); 
    
    }
    

    Die .cpp

    #include "EineKlasse.h"
    
    BOOL CALLBACK EineKlasse::EnumWindowsProc (HWND hwnd, LPARAM lParam) 
    { 
      //Mit Inhalt, hier weggelasssen
    
    } 
    
    void EineKlasse::test()
    {
       EnumWindows (EineKlasse::EnumWindowsProc, 0);    //Dies funktioniert nicht
    
    }
    

    Als Fehler wird ausgegeben:
    "error C3867: "EineKlasse::EnumWindowsProc": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&EineKlasse::EnumWindowsProc", um einen Zeiger auf den Member zu erstellen."

    Mache ich dann was da steht also so:
    Die .cpp

    #include "EineKlasse.h"
    
    BOOL CALLBACK EineKlasse::EnumWindowsProc (HWND hwnd, LPARAM lParam) 
    { 
      //Mit konkretem Inhalt hier weggelasssen
    
    } 
    
    void EineKlasse::test()
    {
       EnumWindows (&EineKlasse::EnumWindowsProc, 0);    //Dies funktioniert nicht
    
    }
    

    Nun kommt als Fehler:
    "error C2664: 'EnumWindows': Konvertierung des Parameters 1 von 'BOOL (__stdcall Trainer::* )(HWND,LPARAM)' in 'WNDENUMPROC' nicht möglich"

    (in c bekomme ich das hin, aber in c++ leider nicht)
    Wie macht man das richtig?



  • class EineKlasse 
    {
       static BOOL CALLBACK EnumWindowsProc (HWND hwnd, LPARAM l_param); 
    
       // ...
    }
    

    Die Funktion muss entweder Global sein oder statisch in einer Klasse.
    Simon


  • Administrator

    Ist zwar nicht ganz dieselbe Funktion, aber grundsätzlich das gleiche Problem. Dürfte daher die richtige Lektüre für dich sein:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39356.html

    Grüssli


Anmelden zum Antworten