Problem mit CWinThread

gamerfunkie

Erfahrenes Mitglied
Hallo,
ich möchte gerne ein thread in einer MFC-Anwendung starten.
Dazu habe ich eine Funktion mit folgendem Kopf:
Code:
UINT Dlg_newCameraView::UpdatePreview(LPVOID param);
Um den thread zu starten rufe ich AfxBeginThread auf: (aus einer memberfunktion der Klasse Dlg_newCameraView)
Code:
AfxBeginThread(&Dlg_newCameraView::UpdatePreview,this->GetSafeHwnd());

Ich bekomme aber folgenden Fehler:
Code:
1>c:\dokumente und einstellungen\user\eigene dateien\programmieren\c++\tracking\tracking\tracking6\dlg_newcameraview.cpp(96) : error C2665: "AfxBeginThread": Durch keine der 2 Überladungen konnten alle Argumenttypen konvertiert werden.
1>        c:\programme\programmieren\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(4202): kann 'CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)' sein
1>        c:\programme\programmieren\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(4205): oder "CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)"
1>        bei Anpassung der Argumentliste '(UINT (__thiscall Dlg_newCameraView::* )(LPVOID), int)'

Was mache ich falsch?
mfg gamerfunkie
 
Hi,

die Fehlermeldung sagt es eigentlich schon. Der Compiler kann das erste Argument nicht konvertieren, da es nicht eindeutig definiert ist. Schau mal da nach.

Mfg

langer
 
Hallo,
soweit konnte ich das problem auch analysieren :)
Aber in der MSDN stand die Funktion so als prototyp(nur nicht als member)
muss die vielleicht static sein?
 
Hallo,

wenn die Thread-Funktion eine Klassen-Methode ist, muss sie als "static" deklariert werden. Das '&' beim ersten Parameter von "AfxBeginThread" muss weg; Funktionen und Methoden sind immer Zeiger.

Gruß
MCoder
 
Wie kann ich denn aber nun mit einer static-Methode in MFC über HDC etc .... etwas zeichen? ich habe aus einer static FUnktion darauf keinen zugrif ... :(
 
Die Thread-Funktion hat ja einen Parameter. Da übergibst du einfach einen Zeiger auf das Dialogobjekt (this). Damit kannst du dann auf alle Dialogelemente zugreifen.

Gruß
MCoder
 
Zurück