Einen Thread starten...
-
Hallo!
Ich möchte in meinem Programm einen Dialog aufpopen lassen, in dem dann ein AnimCtrl läuft.
Das Dumme ist halt, das das Programm im Hintergrund weiterlaufen sollte. Deswegen denke ich das sich hier ein Thread am besten eignet.
Jetzt habe ich folgende Funktion eingefügt:
UINT CDialogSheet1::MyShowProcessThread(LPVOID pParam) { CProgressDlg* pDlg; pDlg = new CProgressDlg(); if(pDlg != NULL) { BOOL ret = pDlg->Create(IDD_PROGRESSDIALOG, pDlg); pDlg->ShowWindow(SW_SHOW); } MSG msg; while (GetMessage(&msg, NULL, 0, 0) && (msg.message != WM_CLOSETHREAD)) { switch (msg.message) { case WM_CLOSETHREAD: pDlg->DestroyWindow(); break; } TranslateMessage(&msg); DispatchMessage(&msg); } return true; }
Die Funktion habe ich aus dem CAnimCtrl-Beispiel.
Den Thread starte ich mit:
AfxBeginThread( MyShowProcessThread, (LPVOID) this);
Jetz kriege ich folgende Fehlermeldung beim Compilieren:
*
Compiling...
DialogSheet1.cpp
D:\pc-frankierung\implementierung sg\Development\Source\Tools\ReportWizard\DialogSheet1.cpp(420) : error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
Error executing cl.exe.
*Was mache ich falsch?
Wie kann ich eine Message an den Thread senden?
Gibt es eine bessere möglichkeit einen Thread anzulegen, mit dem Wizard vielleicht?In den FAQ ist eine Einleitung eine ThreadKlasse anzulegen, aber ich brauche keine klasse sondern nur diese Funktion.
Vielen Dank für eure Hilfe.
-
Die Threadfunktion muß Global sein und nicht in einer Klasse.
-
Der Thread muss 'static' sein.
-
Unix-Tom: Die Threadfunktion muß Global sein und nicht in einer Klasse.
Hmm, das heißt aus der Klasse rausnehmen? Also ohne das "CDialogSheet1::" davor?
Nemesyzz Der Thread muss 'static' sein.
Static ist mir klar, aber wie würde das hier aussehen?
-
Original erstellt von PanicMan:
Static ist mir klar, aber wie würde das hier aussehen?In der "DialogSheet1.h":
static UINT MyShowProcessThread(LPVOID pParam);
-
Hmm, ok, compilieren läst es sich schon mal, habe die Funktion aus der Klasse genommen.
Nun die Frage, wie kann ich eine Message an den Thread senden?