1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| DWORD WINAPI ReceptionThread(LPVOID p) {
HANDLE hStopEvent = (HANDLE) p;
DWORD dwWait;
BOOL fRun = TRUE;
DWORD dwCommStatus; // variable de stockage pour les évènements
CString strValue;
char *ptr,temp[MAX_LOADSTRING]="";
unsigned int TextLen;
ptr = temp;
while(fRun) {
dwWait = WaitForSingleObject(hStopEvent,1000);
switch(dwWait) {
case WAIT_OBJECT_0: // L'événement stop a été déclenché, sortir proprement du thread
fRun = FALSE;
break;
case WAIT_TIMEOUT: // Chaque seconde, effectuer le boulot
TextLen = GetWindowTextLength(hEdtT); // Récupère le nombres de caractères dans le EditBox
// Cette fonction est bloquante, elle va attendre des événements définit par le mask et
// Elle stockera le type d'événement qui l'aura réveillée dans une variable. (est de type LPOVERLAPPED)
// PRM1: Pointeur sur la variable de stockage pour les évènements(de type LPDWORD)
// PRM2: pointeur sur la structure d'overlapped Ici il n'y en a pas.
WaitCommEvent(hPort,&dwCommStatus,0);
while (lirePort(ptr)>0) {
strValue.Format(L"%s",ptr);
SendMessage(hEdtT,EM_SETSEL,TextLen,TextLen); // Placer le curseur à la fin
SendMessage(hEdtT,EM_REPLACESEL,0,(LPARAM)(LPCTSTR)strValue); // Ecrit le texte
TextLen += strValue.GetLength();
}
break;
}
}
return 0;
} |
Partager