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 :
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);
			}
De l'autre coter de mon application, je dois recevoir les buffer avec la fonction ci dessous :

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]