Bonjour a tous
Mon problème est une peu compliqué :
Je réalise un transfert de photo.
Pour cela je lis cette photo dans un buffer (de type char * de 4096).
J'envoi ensuite cela a l'aide d'une fonction(constructeur) :
SendQ931Message ( LONG nCallId, BSTR bStrMessage)
ceci donne le code suivant :
De l'autre coter de mon application, je dois recevoir les buffer avec la fonction ci dessous :
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 char *buffer = new char[4096]; FILE *fo=fopen("C:\\Photo.jpg","rb"); // ouverture du fichier while(!feof(fo)) { try{ int toto=fread(buffer,sizeof(char),4096,fo); iTermPtrEv->SendQ931Message(iTermPtrEv->GetActiveCallId(),buffer); } catch ( _com_error& excepti){ CString temp=""; temp+="ERROR Photo :"; temp+=(LPCTSTR) excepti.Description(); temp+=excepti.ErrorMessage(); MessageBox(NULL,temp,"Photo",MB_OK); }
OnQ931MessageReceived (BSTR bStrMessage, LONG nDecodeurIndice)
Pour ce faire j'utilise le code ci dessous :
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 CTerminalEvent::OnQ931MessageReceived(BSTR bStrMessage,long nDecodeurIndice) { CString RecuCS; RecuCS=BSTRtoASC(bStrMessage); if(RecuCS.Left(6)=="Volume") { if(RecuCS.Left(7)=="Volume2") { m_diagVC2->MiseAJourVolume(RecuCS); return ; } else{ m_diagVC3->MiseAJourVolume(RecuCS); } } else{ char *buffer = new char[RecuCS.GetLength()+1]; strncpy(buffer,RecuCS,RecuCS.GetLength()); FILE *fo=fopen("C:\\Photo.jpg","a+b"); fwrite(bStrMessage,sizeof(char),RecuCS.GetLength(),fo); fclose(fo); } } [quote] Vous vous en douterez, ca marche pas :D En fait je recois des message mais pas entier.. mon chier de 10K se transforme en 1K a peu pres... Donc j'ai pas ma photo[/quote]
Partager