Visibilite des classes MFC

Visibilite des classes MFC - C++ - Programmation

Marsh Posté le 06-03-2003 à 10:31:38    

Voila, je possede un classe GatewayComm qui a une donnee membre  SOCKET s.
J'ai mis un objet de type GatewayComm dans mon document, ca s'appele gw.
 
J'ai un bouton send dans une boite de dialogue qui devrai permettre d'envoyer un message via la socket s. Ma boite de dialogue a aussi une donnee membre pointeur vers mon document pour permettre de recuperer la socket pour faire mon send.
  CCASDoc* ptr_doc;
Donc voici la syntaxe de mon send :

Code :
  1. if (send(ptr_doc->gw.s,msg, strlen(msg), 0 )== SOCKET_ERROR )
  2. {
  3.      affichage erreur
  4. }
  5. else
  6. {
  7.      affichage ok
  8. }


A l'execution je passe toujours dans "affichage erreur" et le probleme ne vient pas de la socket car ailleurs elle fonctionne  si j'en cree une juste avant de faire le send(...) ca fonctionne aussi. C'est ce qui me fait dire que j'ai un probleme de visibilite de la socket de mon objet GatewayComm de mon document.
 
Quelqu'un voit ou j'ai pu me tromper?

Reply

Marsh Posté le 06-03-2003 à 10:31:38   

Reply

Marsh Posté le 06-03-2003 à 10:43:07    

(ptr_doc->gw).s pitetre ? Aulieu d'ecrire directement ptdr_doc.... ds le send passe par un  

Code :
  1. SOCKET sck = ptr_doc->gw.s;
  2. if (send(....


Afin de controler sck avant.
 
 
Mais sinon concernant la visibilite des membre de classe MFC c exactement laa mm qu'en pure c++.

Reply

Marsh Posté le 06-03-2003 à 10:51:41    

VisualC++ a écrit :

(ptr_doc->gw).s pitetre ?  


J'y avais pas pense a ca. Mais non, ca ne change rien, toujours le meme probleme.

VisualC++ a écrit :


Code :
  1. SOCKET sck = ptr_doc->gw.s;
  2. if (send(....




J'avais deja pense a ca mais ca ne resoud pas le probleme.
 
 :??:


Message édité par polo021 le 06-03-2003 à 10:52:14
Reply

Marsh Posté le 06-03-2003 à 10:53:51    

Vi pardon pour le second point manque les parentheses ;)
SOCKET sck = (ptr_doc->gw).s;

Reply

Marsh Posté le 06-03-2003 à 11:03:01    

oui, mais ca ne change rien, meme avec les parentheses.
Ce qui est etonnant c que ca passe a la compilation et au link, donc la socket s est connue dans ma boite modale et pourtant ca ne fonctionne pas.  :pfff:

Reply

Marsh Posté le 06-03-2003 à 11:24:38    

Ca ok mais quand t executes en debug, tu recupes koi ds sck ? tout est valide ?

Reply

Marsh Posté le 06-03-2003 à 11:37:47    

J'ai pas trouve le moyen de faire un debug d'une application qui tourne sur pocket pc.
Car c'est un pgm pour pocket pc donc je compile et lie sur pc et je transfert directement le .exe sur le pocket pc.
 
 
Comment je pourrai resoudre ce probleme de socket? Je vais quand meme pas mettre tout mon code dans le document.

Reply

Marsh Posté le 06-03-2003 à 13:43:04    

plutot que de passer par un pointeur sur le document, je viens d'essayer d'appeler une methode de ma classe GatewayComm en passant directement par un pointeur sur GatewayComm. Ce qui donne dans le bouton de la boite de dialogue
GatewayComm* ptr_gw->sends("message a envoyer" );
 
Et dans la methode sends de GatewayComm  

Code :
  1. if (send( s,temp, strlen(temp), 0 )== SOCKET_ERROR )


 
Comme cela, je ne passe plus par un pointeur sur le document. Ce qui fait que le probleme est contourne mais toujours pas resolu.
C qd meme bizarre ce probleme.  :heink:  
En tout cas merci de m'avoir aide.

Reply

Marsh Posté le 06-03-2003 à 14:05:22    

polo021 a écrit :


GatewayComm* ptr_gw->sends("message a envoyer" );


apres avoir reflechi un peu, je me demande si tout ceci est bien correct! car je n'ai initialise ptr_gw nulle part!
 :ouch:  
Enfin si ce n'est pas necessaire, ca peut fonctionner qd meme mais bon ca fait quand meme un peu desordre non?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed