Help (threads)

loicus Messages postés 46 Date d'inscription mardi 27 août 2002 Statut Membre Dernière intervention 3 mai 2008 - 29 oct. 2002 à 18:50
cs_llo Messages postés 45 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 6 décembre 2002 - 30 oct. 2002 à 14:14
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

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
29 oct. 2002 à 20:19
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.
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
29 oct. 2002 à 20:19
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.
0
cs_llo Messages postés 45 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 6 décembre 2002
30 oct. 2002 à 14:14
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
0
Rejoignez-nous