Bonjour voici mon problème, je cherche a afficher un flux de données en temps reel dans une boite de dialogue. Pour cela j'utilise la classe CAsyncSocket pour recevoir ma trame de données qui est constitué d'une vingtaine d'octets. La fonction OnReceive est appeler a chaque fois que quelque chose arrive sur le socket et je souhait l'afficher directement a lecran tout en gardant la main dans mon application ( je doit pouvoir en fait arreter le flux de donnee). Avec la methode que j'utilise mon application est "bloqué", je ne voit rien safficher a l'ecran et je ne peut pas utiliser mon appli. Le flux bloque mon appli.
Voici mon code ma variable membre m_affiche est un C_String que je mets à jour avec UpdateData(FALSE).
Connaissez vous un moyen pour faire un affichage en temp reel merci.![]()
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32 void TCPSocket::OnReceive(int nErrorCode) { TCPSocket* temp; temp=((CServerDlg*)m_pDlg)->SocketTCP2; static int i=0; i++; TCHAR buff[127]; int nRead; nRead = temp->Receive(buff,127,0); buff[nRead] = 0; //terminate the string CString szTemp(buff); //************************************************************************************* //Morceau de code rajouter pour enregistrer le dans un fichier CFile fichier; fichier.Open("reception.dat",CFile::modeCreate |CFile::modeWrite); fichier.Write(szTemp,szTemp.GetLength()); fichier.Close(); //************************************************************************************* ((CServerDlg*)m_pDlg)->m_affiche += " \n "; ((CServerDlg*)m_pDlg)->m_affiche += buff; ((CServerDlg*)m_pDlg)->UpdateData(FALSE); CAsyncSocket::OnReceive(nErrorCode); }
Partager