Comment créer un thread ? [C++] - Programmation
Marsh Posté le 20-01-2001 à 22:50:57
Ben si tu sais pas quelle fonction exécuter, pourquoi crées-tu un thread
Marsh Posté le 20-01-2001 à 22:52:45
je sais quelle fonction executer mais je sais pas comment dire au thread qu'il doit executer cette fonction.
Marsh Posté le 20-01-2001 à 22:58:49
Tu mets le nom de la fonction dans l'appel à CreateThread.
--Message édité par Verdoux--
Marsh Posté le 20-01-2001 à 23:09:41
voilà le pb :
le code :
void Test()
{
__asm
{
ssxor eax,eax
boucle:
ssinc eax
ssjno boucle
}
}
void CTestCPUDlg::OnLancerTest()ss
{
CreateThread(NULL, 100, Test, NULL, NULL, NULL);ss
}
et l'erreur :
error C2664: 'CreateThread' : cannot convert parameter 3 from 'void (void)' to 'unsigned long (__stdcall *)(void *)'
ssssssssNone of the functions with this name in scope match the target type
Marsh Posté le 20-01-2001 à 23:17:49
Tu changes le prototype de Test en:
DWORD Test(LPVOID parameter)
Et l'appel en:
CreateThread(NULL, 100, (LPTHREAD_START_ROUTINE) Test, NULL, NULL, NULL);
Marsh Posté le 20-01-2001 à 23:24:28
OK merci, ca marche.
Mais maintenant, j'aimerais savoir comment faire pour mettre dans le thread un code qui affiche qqchose dans un textbox de la fenêtre.
UpdateData(TRUE);
m_val=100;
UpdataData(FALSE);
UpdateWindow();
donne :
error C2065: 'UpdateData' : undeclared identifier
error C2065: 'm_val' : undeclared identifier
error C2065: 'UpdataData' : undeclared identifier
error C2660: 'UpdateWindow' : function does not take 0 parameters
Marsh Posté le 21-01-2001 à 00:29:54
moi je fais ça:
void myThread(void *pvoid)
{
while(1)
{
ssSleep(20);
ssInvalidateRect(hWnd,NULL,FALSE);
}
}
.....
.....
switch (message)
{
case WM_CREATE:
ss_beginthread(myThread,0,NULL);
return 0 ;
...
Moi c'est pour un prog opengl donc le thread est executé tout le temp.
Marsh Posté le 20-01-2001 à 22:34:49
Tout est dans le sujet.
J'ai VC++6 Pro
J'ai essayé la fonction API CreateThread
Mon problème c que cette fonction veut un pointeur vers une fonction que le thread doit executer et que je sait pas comment lui dire quelle fonction il doit executer.