Bonjour a tous,
Le but du jeu est de creer un thread qui lance l evenement " My_event" en boucle:
///////////////////////////////////////////////////////////////////////////////////
DWORD WINAPI ThreadProc(LPVOID lpParam);
void my_class::evenement_unique()
{
FireMyEvent();
}
void my_class::evenement_en_boucle()
{
DWORD ThreadId;
CreateThread(NULL, NULL, ThreadProc, NULL, NULL, &ThreadId);
}
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
while (42)
{
// creer l evenement My_event
Sleep(10);
}
return (0);
}
Le code suivant ne fonctionne pas....
//////////////////////////////////////////////////////////////////////////////////
void my_class::evenement_en_boucle()
{
DWORD ThreadId;
CreateThread(NULL, NULL, ThreadProc, (LPVOID)this, NULL, &ThreadId);
}
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
Cmy_class *mc;
mc = (Cmy_class *)lpParam;
while (42)
{
mc->FireMyEvent();
Sleep(10);
}
return (0);
}
et ca non plus...
////////////////////////////////////////////////////////////////////////////////////
void my_class::evenement_en_boucle()
{
DWORD ThreadId;
CreateThread(NULL, NULL, ThreadProc, (LPVOID)this, NULL, &ThreadId);
}
LRESULT CImageXCtrl::OnItUserMsg(WPARAM, LPARAM)
{
FireMyEvent();
return (0);
}
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
Cmy_class *mc;
mc = (Cmy_class *)lpParam;
while (42)
{
mc->PostMessage(WM_USER, 0, 0);
Sleep(10);
}
return (0);
}
les fonctions présentées RESUMENT mon code qui ressemble plus a ca:
///////////////////////////////////////////////////////////////////////////////////////////////
WaitForSingleObject(hEvent,INFINITE);
//while (1)
// {
//imgX->SetImage((long)(my_img[abs(cur)%nb_img]));
//if (cur >= nb_img - 1)
//cur_sens = -1;
//if (cur <= -1)
//cur_sens = 1;
//cur += cur_sens;
//imgX->FireImagePrete();
//Sleep(10);
//}
//int e = 0;
//int post_ret = 0;
// HWND hFore = GetForegroundWindow();
// PostMessage(hFore, WM_PAINT, 0,0);
//::PostThreadMessage(GetCurrentThreadId(), WM_PAINT, 0 ,0);
//HWND hWnd = (HWND)NULL;
// post_ret = PostMessage(hWnd, WM_USER, 0, 0);
//PostThreadMessage(gl_thread_id, WM_USER, 0 ,0);
//e=1;
//imgX->PostMessage(WM_USER, 0, 0);
//PostMessage( GetParent(0)->m_hWnd, WM_USER, 0,0);
//GetLastError();
//imgX->FireImagePrete();
// post_ret = SendNotifyMessage(HWND_BROADCAST, WM_USER, 0, 0);
// SendMessage(0, WM_USER, 0, 0);
// PostMessage(HWND_BROADCAST, WM_USER, 0, 0);
gl_imgX->PostMessage(WM_USER, 0, 0);
char *s;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &s,
0, NULL );
::MessageBox(0, s, "error", 0);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
merci pour votre aide et/ou vos idées.