Callback function



  • wie kann ich aus der CALLBACK function aus Methoden eines Objektes aufrufen? Ich hab ja keine Möglichkeit das Objekt der funktion zu übergeben.

    hier der code:

    #include <windows.h>
    #include <tchar.h>
    #include <iostream>
    
    class ausgabe {
    	void write(TCHAR* sss) {
    		_tprintf(_T("Fenster: %s\n"), sss);
    	}
    
    };
    
    BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam) {
        TCHAR title[500];
        ZeroMemory(title, sizeof(title));
    
        if(!IsWindowVisible(hWnd)) return true;
        GetWindowText(hWnd, title, sizeof(title)/sizeof(title[0]));
    
        handle.write(title);
    
        return true;
    }
    
    int main() {	
    
    	ausgabe handle;
    
    	EnumWindows(MyEnumProc, 0);
        return 0;
    }
    


  • EnumWindows(MyEnumProc, &handle);
    
    BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam)
    {
         // ...
         ausgabe* pAusgabe = (ausgabe*)lParam;
         pAusgabe->write(title)
    }
    


  • ich bekomme eine fehlermeldung:

    ..\firstdll.cpp:35: error: invalid conversion from `ausgabe*' to `LPARAM'
    ..\firstdll.cpp:35: error:   initializing argument 2 of `BOOL EnumWindows(BOOL (*)(HWND__*, LPARAM), LPARAM)'
    

    wie kann ich die referenz meines objektes in dem objekttyp LPARAM speichern?



  • firstdll.cpp in firstdll.c umbenennen.



  • nein nein hier musst du auch casten aber benutz nicht diesen cpp cast mist, mach einfach so:

    EnumWindows(MyEnumProc, (LPARAM)&handle);
    

Anmelden zum Antworten