Bonjour � tous,

j'essaie de r�soudre un probl�me de freeze en utilisant un timer dans une thread. J'ai donc une thread 'ThreadListen' (qui est une fonction membre 'static' de ma classe CMonObjet), et j'essaie de lancer un timer (que j'ai d�clar� comme fonction 'libre', non membre de ma classe CMonObjet) dans cette thread:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
 //MonObjet .h
void CALLBACK TimerCallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
class CMonObjet
{
...
protected:
	static UINT ThreadListen(LPVOID lpvParam);
};
et le .cpp
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// MonObjet.cpp
UINT CMonObjet::ThreadListen(LPVOID lpvParam)
{
CMonObjet* monObjet = (CMonObjet*) lpvParam;
monObjet ->SetTimerId(timeSetEvent(monObjet ->GetTimerDelay(), 200, TimerCallback, (DWORD) monObjet , TIME_ONESHOT|TIME_CALLBACK_FUNCTION));
ReadFile(monObjet ->GetPortHandle(), &oRxByte, 1, &dwNbBytesRead, NULL);
timeKillEvent((UINT) monObjet ->GetTimerId());
}
 
//et la callback:
void CALLBACK TimerCallback(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
	CMonObjet* monObjet = (CMonObjet*) dwUser;
	DWORD dwExitCode;
	GetExitCodeThread(monObjet ->GetThreadHandle(), &dwExitCode);
	TerminateThread(monObjet ->GetThreadHandle(), dwExitCode);
	AfxMessageBox("thread killed");
}
Et j'ai 2 probl�mes que je ne parviens pas � r�soudre:
1/ j'ai 2 casts qui g�n�rent les 2 warnings suivants:
troncation de pointeur de 'CMonObjet*' � 'DWORD' (ligne timeSetEvent())
et 'cast de type'*: la conversion de 'DWORD' en 'CMonObjet*' d'une taille sup�rieure (premiere ligne de la callback)
Comment �viter ces warnings?

2/ un probl�me de link:
error LNK2019: symbole externe non r�solu __imp__timeKillEvent@4 r�f�renc� dans la fonction "protected: static unsigned int __cdecl CMonObjet::ThreadListen(void *)" (?ThreadListen@CMonObjet@@KAIPAX@Z)
je ne comprends pas cette erreur. Quelqu'un pourrait me donner quelques explications?