Help (threads)

Signaler
Messages postés
46
Date d'inscription
mardi 27 août 2002
Statut
Membre
Dernière intervention
3 mai 2008
-
Messages postés
45
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
6 décembre 2002
-
Bon, bhen voila.. j'essaye de faire un thread

j'aimerais ouvrir la fonctions LCD_BootScreen()
dans un thread, donc j'utilise cette fonction :

thboot= CreateThread(NULL, 0, LCD_BootScreen , NULL, NULL, NULL);

thboot est le handle de mon threads et j'ai mis tt le reste a null, pour les essais...

Mais, quand je compile avec VC++6 il me dis :

error C2664: 'CreateThread' : cannot convert parameter 3 from 'void (void)' to 'unsigned long (__stdcall *)(void *)'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast

Voila, je ne sais pas coment je dois ecrire l'argument 3 de la fonctions... donc, svp aider moi

merci d'avance

3 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Ton problème c'est que le prototype de la fonction
LCD_BootScreen() est faux.

Tu as:

void LCD_BootScreen();

il te faut:

UINT CALLBACK LCD_BootScreen(LPVOID param);

enfin je suis plus exactement sur de CALLBACK.
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Ton problème c'est que le prototype de la fonction
LCD_BootScreen() est faux.

Tu as:

void LCD_BootScreen();

il te faut:

UINT CALLBACK LCD_BootScreen(LPVOID param);

enfin je suis plus exactement sur de CALLBACK.
Messages postés
45
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
6 décembre 2002

salut,
lors de l'appel, caste les arguments que tu as besoin selon le prototype suivant :

#include
...
typedef unsigned (__stdcall *PTHREAD_START) (void *);
...
DWORD WINAPI ProcThread (LPVOID lpThreadParameter)
{
... // pour info lpvThreadParm ==> lpThreadParameter
}
...
DWORD dwThreadID;
HANDLE hThread = ((HANDLE)_beginthreadex(
(void *) (lpsa),
(unsigned) (cbStack),
(PTHREAD_START) (ProcThread),
(void *) (lpvThreadParm),
(unsigned) (fdwCreate),
(unsigned *) (&dwThreadID)))
...
g_hThread[0] = chBEGINTHREADEX(NULL, 0, CounterThread, NULL, 0, &dwThreadID);

voilà j'espère que ce sera OK
l'lo