IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

soucis avec un executable


Sujet :

Visual C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut soucis avec un executable
    coucou à tous

    Comme le dit l'intitulé, j’ai un souci avec un exécutable.
    J’ai commencé à développer une application sur Visual C++ 6 qui communique avec un port série.
    Pour vérifier que m'on appli tourne correctement, j'ai utilisé la fonction "TRACE", puis j'ai lancé le mode débug(F5)(sans point d'arrêt);
    Tout s'est très bien déroulé.
    Cependant lorsque j'ai voulu utiliser directement l'exécutable, la communication avec le port série ce fait partiellement(ctrl+F5).

    Quelqu’un connaît-il les raisons de mon problème ou peut m’éclairer ?
    SVP

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    du nouveau

    afin de savoir ce qui ne va pas, j'ai crée un fichier "erreur.txt". Si une erreur ce produit, elle est sauvegarder dans ce fichier.

    Grace à la methode "GetLastError()" , j'ai put remarqué que l'appli perdait la comunication avec le port série
    System Errors - Numerical Order

    2 The system cannot find the file specified. ERROR_FILE_NOT_FOUND

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ce ne serait pas plutôt ERROR_INVALID_HANDLE, qui indiquerait une perte de connexion ?

    À moins que tu ne gardes pas le port série ouvert en permanence?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    question à 2 balles : est ce que le fichier existe ? si oui, comment tu fais passer le chemin du fichier ?
    il y a du linge sur la corde à linge

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    Pour répondre à Médinoc :
    Quand je traduis bêtement pour moi c’est « le system n’a pas trouvé le fichier spécifier » donc j’en ai conclu, qu’il a perdu la com.
    (je reconnais que j’ai des lacunes en anglais mais la je suis sur)
    Je laisse en permanence le port ouvert et le ferme à la fin du test à effectuer.

    Pour répondre à A la drogue c’est mal :
    Le fichier en question est un port série.

    Je tiens rappeler que la communication s’effectue correctement en mode « debug », mais pas en exécutant normalement l’application.


    C’est pourquoi je ne comprend pas l’erreur qui c’est inscrit dans le fichier texte ;

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Quand je traduis bêtement pour moi c’est « le system n’a pas trouvé le fichier spécifier » donc j’en ai conclu, qu’il a perdu la com.

    Donc, il ne trouve pas un fichier, ce qui est une erreur à l'ouverture, et toi, tu en conclus qu'il perd la com (ce qui signifie que la com est déjà ouverte)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    Oui je considère qu'il est ouvert.

    Je ne l'ai pas précisé mais, quel que soit le nombre de trame que j'envoi... la première est bien envoyée( cette trame allume un voyant sur ma carte).
    mais les suivantes non...

    Comme j'envois les commandes les une après les autres sans fermer la communication avec le port, j'ai considéré l'erreur qui m'a été signalé comme une perte de connexion.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ben, comme c'est une erreur à l'ouverture, c'est impossible.

    PS: Tu ouvres le port avec quelles fonctions ? (FILE *, fd, Win32Api...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    j'ouvre mon port avec "CreateFile"
    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
     
    bool CCom::PortOpen(int portnumber, long baudrate,char parity,int wordlength,int stopbits)
    {
     
        char sz[20];
        m_nInputBufferSize=1050;
        m_nOutputBufferSize=1050;
     
        memset(&m_ovWrite,0,sizeof(m_ovWrite));
    	memset(&m_ovRead,0,sizeof(m_ovRead));
     
    	wsprintf( sz, "\\\\.\\COM%d", portnumber);   
        m_hCom = CreateFile( sz,
            GENERIC_READ | GENERIC_WRITE,
            0,
            NULL,
            OPEN_EXISTING,
            FILE_FLAG_OVERLAPPED,
            NULL );
     
        if ( m_hCom == INVALID_HANDLE_VALUE )
        {
            return false;
        }   
     
    	... initialisation de la structure DCB
     
        return true;
    }

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Eh bien normalement, l'erreur ERROR_FILE_NOT_FOUND ne peut avoir lieu qu'ici (à moins que tu n'ouvres des fichiers en plus).

    Si tu écris dans le port COM avec WriteFile(), l'erreur doit être autre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    en fait c'est quand je fait une attente d'évènement pour la reception d'une trame que se produit l'érreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(!WaitCommEvent( *INFO->m_hCom, &dwEvtMask, NULL ))
    {
    ...
    //écriture dans un fichier txt "GetLastError()"
    ...
    }
    else
    {
    //écriture dans ficher txt que l'attente c'est bien passé
    }
    j'ai fait plusieur fichier text pour vérifier que toutes les étapes de la communication était bien respecter. (et j'ai bien vérifier que je les fermés)

    bizarment, il semblerait que toute les trames ont été envoyé. Mais seul la première à eu un éffet sur la carte.
    une seul trame a été reçu.
    De plus pour l'attente d'évènement plusieur ce passe correctement et puis sens raison apparente, j'ai le problème qui apparait.


    j'ai vérifier si ça venait pas de mon "TimeOut". Mais non , il semble dans les normes.

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Alors, premièrement, que signifie *INFO->m_hCom précisément : Je ne suis pas doué pour les priorités, c'est pour ça que je mets toujours des parenthèses.

    Ensuite, essaie de coupler un FormatMessage() avec ton GetLastError(). Et surtout, fait le GetLastError() immédiatement et mémorise sa valeur : s'il y a un appel de fonction entre le WaitCommEvent() et le GetLastError(), la valeur retournée sera affectée.

    Et là, on verra bien si c'est toujours ERROR_FILE_NOT_FOUND. Si c'est toujours le cas, je ne sais pas comment t'aider.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    Pour répondre à ta question :
    L’attente d’événement s’effectue dans un thread.
    INFO est une structure qui est mis en paramètre lors de « CreateThread »
    Cette structure contient tous les attributs que je vais avoir besoin dans mon trhread.
    L’un d’eux « m_hCom » est le « HANDL E » retourné par « CreateFile » .

    Or mis une fonction « memset(…) » et « sprintf(…) », je mémorise aussitôt la valeur de « GetLastError() » dans une variable.

    Je vais essayer FORMAT MESSAGE

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    OK
    j'ai fait FormatMessage()
    la réponce est fichier spécifier introuvable

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je pense qu'il y a une étoile de trop dans le premier paramètre de WaitCommEvent().

    Et pour être sûr, tu devrais absolument faire le GetLastError() immédiatement après le WaitCommEvent().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    non, ça ne va pas non plus, il me dit maintenant que le descripteur(HANDLE) n'est pas valide.
    De plus, même en mode debug ça ne fonctione plus.

  17. #17
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Peux-tu poster un fragment de code minimal et compilable qui fait de l'envoi (pas de réception) et montre le problème ?

    PS: c'est supposé marcher sous XP, au moins ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    Peux-tu poster un fragment de code minimal et compilable qui fait de l'envoi (pas de réception) et montre le problème ?

    PS: c'est supposé marcher sous XP, au moins ?
    désolé, je ne vois pas ce que tu demande?

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Points : 22
    Points
    22
    Par défaut
    voici ma fonction qui me permet d'envoyer une trame:

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    bool CCom::WriteComm(unsigned char *lpByte , DWORD dwBytesToWrite)
    {
       BOOL		fWriteStat;
       DWORD	dwBytesWritten ;
       DWORD	dwErrorFlags;
       DWORD	dwError;
       DWORD	dwBytesSent=0;
       COMSTAT	ComStat;
       char     szError[ 128 ];
     
     
       if(NULL == m_hCom)
          return false;
     
       fWriteStat = WriteFile( m_hCom, lpByte, dwBytesToWrite, &dwBytesWritten, &m_ovWrite);
     
       if (!fWriteStat)
       {
          if(GetLastError() == ERROR_IO_PENDING)
          {
     
             while(!GetOverlappedResult(m_hCom, &m_ovWrite, &dwBytesWritten, TRUE ))
             {
                dwError = GetLastError();
                if(dwError == ERROR_IO_INCOMPLETE)
                {
                   dwBytesSent += dwBytesWritten;
                   continue;
                }
                else
                {
    				break;
                }
     
             }
     
             dwBytesSent += dwBytesWritten;
     
             if( dwBytesSent != dwBytesToWrite )
    			wsprintf(szError,"\nProbable Write Timeout: Total of %ld bytes sent", dwBytesSent);
             else
    		 {
                wsprintf(szError,"\n%ld bytes write\n", dwBytesSent);
     
    		 }
     
             OutputDebugString(szError);
     
          }
          else
          {
             ClearCommError( m_hCom, &dwErrorFlags, &ComStat );
     
             return false;
          }
       }
       return true;
     
    }

  20. #20
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Euh... Je ne vois pas où tu loggues l'erreur n°2, ici...

    Et je ne suis pas sûr de pouvoir vraiment t'aider pour ce qui est des structures OVERLAPPED, mais bon:
    Code C++ non-testé : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    bool CCom::WriteComm(unsigned char *lpByte , DWORD dwBytesToWrite)
    {
    	BOOL    fWriteStat = FALSE;
    	DWORD	dwBytesWritten = 0;
    	DWORD	dwErrorFlags = 0;
    	DWORD   dwWriteError = 0;
    	DWORD	dwBytesSent=0;
    	COMSTAT	ComStat;
    	TCHAR   szError[ 128 ];
     
     
    	if(NULL == m_hCom)
    		return false;
     
    	fWriteStat = WriteFile( m_hCom, lpByte, dwBytesToWrite, &dwBytesWritten, &m_ovWrite);
    	dwWriteError = GetLastError();
    	if (!fWriteStat)
    	{
    		if(dwWriteError == ERROR_IO_PENDING)
    		{
    			while(!GetOverlappedResult(m_hCom, &m_ovWrite, &dwBytesWritten, TRUE ))
    			{
    				DWORD const dwError = GetLastError();
    				if(dwError == ERROR_IO_INCOMPLETE)
    				{
    					dwBytesSent += dwBytesWritten;
    					continue;
    				}
    				else
    				{
    					break;
    				}
    			}//while
     
    			dwBytesSent += dwBytesWritten;
     
    			if( dwBytesSent != dwBytesToWrite )
    				wsprintf(szError, TEXT("\nProbable Write Timeout: Total of %ld bytes sent"), dwBytesSent);
    			else
    			{
    				wsprintf(szError,TEXT("\n%ld bytes write\n"), dwBytesSent);
    			}
     
    			OutputDebugString(szError);
    		}
    		else
    		{
    			//Afficher l'erreur dans le debug
    			int nPrinted = wsprintf(szError, TEXT("\nError %lu : "), dwWriteError);
    			FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwWriteError, 0, szError, 128-nPrinted, NULL);
    			OutputDebugString(szError);
    			ClearCommError( m_hCom, &dwErrorFlags, &ComStat );
    			return false;
    		}
    	}//if
    	return true;
    }
    Ce n'est pas testé, mais ça compile.
    Et tu devrais vérifier de même (GetLastError() immédiat) pour toutes tes autres fonctions qui accèdent au port COM.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo