CreateThread Funktion in anderer Klasse definiert!?
-
Hallo liebes Forum,
ich habe ein kleine Problem bei der Modularisierung meines Programms.
Ich möchte gerne folgende Zeile zum laufen bringen:
CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)(functions::MessageLoopThreadNEU), NULL, 0, &dwThreadID );Also einen Thread starten mit einer Funktion die in einer anderen Klasse implementiert ist.
Habe ich die Funktion MessageLoopThreadNEU in der gleichen Klasse funktioniert es:
CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)MessageLoopThreadNEU), NULL, 0, &dwThreadID );Der Fehler ist folgender:
test.cpp(1099) : error C2440: 'type cast' : cannot convert from 'void (__stdcall functions::* )(LPVOID)' to 'LPTHREAD_START_ROUTINE'Die Header Datei habe ich angepasst und die Funktion ist auch in der Zielklasse bekannt.
Hat jemand vielleicht eine Idee, warum es nicht funktioniert?
Gruß & Danke
Keks
-
-
#include <windows.h> class MyClass { public: void Start(); void Wait(); void __stdcall ThreadProc(); HANDLE m_hThread; }; int main() { MyClass c; c.Start(); c.Wait(); return 0; } LPTHREAD_START_ROUTINE __declspec(naked) xyz(...) { __asm mov eax,[esp+4] __asm ret } void MyClass::ThreadProc() { MessageBox(0, TEXT("running..."),0,0); } void MyClass::Start() { DWORD dwThreadID; m_hThread = CreateThread(NULL, 0, xyz(&MyClass::ThreadProc), this, 0, &dwThreadID ); } void MyClass::Wait() { WaitForSingleObject(m_hThread, INFINITE); CloseHandle(m_hThread); }