c'est sur que ça compile vu tous les cast brutaux que tu fait
(le dernier est pas mal, tu caste une constante en un pointeur!!!)
point d'entrée du thread (si dans une classe, doit être une fonction static, l'objet associé peut être passé en param lors de CreateThread et récupéré dans lpData):
DWORD WINAPI ThreadFunc(LPVOID lpData)
{
// du code ici
return 0;
}
// création du thread (NULL peut être remplacé par un pointeur sur une classe ou une struct):
DWORD dwThreadId;
HANDLE hThread = CreateThread(NULL, 0, ThreadFunc, NULL, CREATE_SUSPENDED, &dwThreadId);
// pour modifier la priorité :
SetThreadPriority(hThread, THREAD_PRIORITY_NORMAL);
// si créé avec CREATE_SUSPENDED, il faut démarrer le thread
ResumeThread(hThread);
Si tu fais du C++ (qu'il y a histoire de classe dans le thread), emploie _beginthreadex au lieu de CreateThread sinon fuites memoire.
Lis Richter qui explique le pourquoi en details.
Doit etre __stdcall, declaree 'static' et pas autrement !!!
Comme te l'a deja dit ymca2003, tes cast brutaux ne font que forcer le compilo a accepter de compiler, aucun risque que puisse tourner.
effectivement la fonction static est la chose à faire mais j'ai un problème d'édition de liens
dans cette même fonction, j'utilise ptrDlg qui est maintenant static mais j'ai un problème C:\Dev-Cpp\Projets\CThread.o(.text+0x181):C:\Dev-Cpp\Projets\WinEmboss3\WinEmboss2\serialThread.cpp
more undefined references to `CThread::ptrDlg' follow