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);