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