Bonsoir,
Mon problème vient du fait que je ne sais pas comment le faire proprement.
Donc en gros, j'ai une boite de dialogue qui lance un thread, ce dernier ajoute des infos dans une listBox.
>>>Version 1 (je me prend pas la tête)
// dans la DlgBox
AfxBeginThread(ServerThreadProc,
this, THREAD_PRIORITY_NORMAL);
...
// dans le threads
UINT ServerThreadProc(LPVOID pParam) //copie de this
{
char* buffer = new char[SERVERMAXBUF];
CListBox* pListBox = static_cast<CListBox*> (((CWnd*)
pParam)->GetDlgItem(IDC_LIST1));
...
pListBox->AddString(buffer );
}
>>>>Version 2 (j'ai été lire le msdn mais je suis peu noob de la programation windows)
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vccore/html/_core_multithreading.3a_.programming_tips.asp
// dans la DlgBox
AfxBeginThread(ServerThreadProc,
GetSafeHwnd(), THREAD_PRIORITY_NORMAL);
...
// dans le threads
UINT ServerThreadProc(LPVOID pParam) //copie de this
{
char* buffer = new char[SERVERMAXBUF];
CWnd * myPtrCWnd =CWnd::FromHandle((HWND)pParam); CListBox* pListBox = static_cast<CListBox*> (myPtrCWnd->GetDlgItem(IDC_LIST1));
...
pListBox->AddString(buffer );
}
La version 1 c facile je passe this a mon threads.
Par contre dans la version 2 j'essaye d'utiliser un handle de windows (HWND) comme je l'ai vu souvent faire.
(ca me permet nottament d'envoyer des messages (via ce HWND) a destination de ma boite de dialogue)
Donc j'en suis là, j'ai mon HWND et je fait un FromHandle qui me retourne un pointeur sur ma boite de dialogue.
Ce qui revient au même que de passer this directement non ?
Sauf que dans msnd
(extrait voir ci-dessus pour art. complèt )
"Il existe différentes façons de contourner ce problème. La première est de passer au thread de travail des descripteurs individuels (par exemple, HWND) à la place d'objets C++. Le thread de travail ajoute alors ces objets à sa carte temporaire en appelant la fonction membre FromHandle appropriée. "Dans mon exemple 2, la fonction membre FromHandle est elle utilisée de façon appropriée ?
(Si oui)
Pq La version 2 présente elle un intéret ?
Si je pouvais avoir quelques petites explication sur l'utilisation de FromHandle et l'histoire de la carte temporaire
(je vous le raconte comme je le comprend pour que vous puissiez me corriger si besoin est)
Merci pour vos réponse constructive