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

MFC Discussion :

fen�tre de log visual c++


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Par d�faut fen�tre de log visual c++
    bonjour � tous,

    je suis d�butant en visual c++. En fait, je voudrais pouvoir afficher lors de l'ex�cution de mon programme une fen�tre avec toute une s�rie d'info de log. Genre afficher ce qu'il est en train de faire, les valeurs qu'il manipule, etc..

    Qu'est-ce qui serait le plus facile, est-ce que je peux utiliser un contr�le d�j� existant dans les MFC ?

    grand merci d'avance.

  2. #2
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    C'est simple: tu utilises un simple CEdit, puis tu cr�e une m�thode du style:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    TraceLog(CString csLog)
    {
    CString csTemp;
    monEdit.GetText(csTemp);
    csTemp+="\r\n";
    csTemp+=csLog;
    monEdit.SetWindowText(csTemp);
    }
    Ne pas oublier je cocher "multiligne" et "want return" dans les propri�t�s du CEdit.

    hope it helps.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Par d�faut
    Merci,

    c'est vrai que �a marche mais il y a quand m�me un probl�me, c'est qu'� premi�re vue, j'arrive vite � la saturation d'un CString et la suite de mes caract�res ne s'affiche plus. Je ne peux pas non plus vider mon CString parce que j'ai quand m�me beaucoup � afficher en une seule fois ....

  4. #4
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    ha, bon ben l� il faudrait que tu sois un peu plus pr�cis alors.
    Comment de caract�res max � afficher en tout? Combien de caract�res max d'un coup? Est-ce que tu veux des lignes? Ou bien tout afficher p�le-m�le? etc.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Par d�faut
    et bien disons que je devrait pouvoir facilement envoyer une centaine de caract�res d'un coup et je devrais envoyer quand m�me pas mal de lignes durant tout le programme.

    est-ce qu'il n'existe pas un moyen de r�aliser cela sans rectriction de caract�res ???

    Ou alors, est-ce que je pourrais envoyer ces lignes dans un fichiers qui s'afficherai automatiquement dans ma fen�tre ?

  6. #6
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Mmmh, �trange... la taille max d'un CString est d'environ 2Go je crois. (corrigez-moi si je me trompe, mais de toutes fa�ons, c'est �norme). Idem pour un CEdit.

    Pour ce qui est d'utiliser un fichier, ce serait plus logique de remplir de fichier � la fin, en fonction du contenu de ton CEdit.

    Citation Envoy� par bigwill
    Je ne peux pas non plus vider mon CString parce que j'ai quand m�me beaucoup � afficher en une seule fois ....
    Que veux-tu dire exactement? Je le r�p�te, un CString d'une centaine de caract�re, ce n'est pas vraiment gros (si je puis me permettre cette litote. Oh et puis oui, je me permet, c'est les vacances apr�s tout )

    Pourrais-tu �tre plus explicite en ce qui concerne ton bug? (�a plante � quelle ligne? message du debugger, etc.)

  7. #7
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Sinon, je viens de penser: il y aurait bien une autre solution: la CListBox.
    L'utilisation de cette classe te permet d'ajouter directement une chaine de carract�re, donc pas besoin de r�cup�rer son contenu (je pense que c'�tait �a qui posait probl�me). La m�thode AddString() est ton amie.
    En revanche, il te faudra d�couper la nouvelle chaine � ins�rer car la CListBox ne g�re pas toute seule le retour � la ligne.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Par d�faut
    tu as raison, la premi�re solution avec le CEdit ne devrait pas poser de probl�me et surtout pas la taille d'un CString.

    Le plus bizzare, c'est que �a plante apr�s des appels succ�ssifs � ma fonction:

    AfficherLog(CString chaine)
    {
    CString temp;
    myLog->GetWindowText(temp);
    temp+="\r\n";
    temp+=chaine;
    myLog->SetWindowText(temp);
    }

    Mais �a plante � un endroit o� �a n'a rien � voir, o� ma fonction n'est m�me pas appel�e. Et quand je met en commentaire toute la fonction et que je fais juste �a :

    AfficherLog(CString chaine)
    {
    myLog->SetWindowText(chaine);
    }

    ben �a fonctionne mais bon �videmment je n'ai que la derni�re ligne ...

    Il n'y aurait pas un prob avec les allocations pour la CString temp ????

  9. #9
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Oui, il est possible que le SetWindowText g�n�re une exception si le texte est trop grand. (Ou peut-�tre le GetWindowText).

    C'est pour �a que je te conseille la deuxi�me solution: un CListBox
    il te faut
    1/ une fonction qui d�coupe la chaine que tu va ins�rer dans ta CListBox
    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
     
    //cette fonction prend une CString, retourne un CString composée des iNbCharParLigne premiers caractères et supprime ces premiers caractères du buffer
    CString DecoupeString(CString csBuffer, int iNbCharParLigne)
    {
        CString csRet = csBuffer.Left(iNbCharParLigne);
        if (csBuffer.GetLength()>iNbCharParLigne)
        {
            csBuffer = csBuffer.Right(csBuffer.GetLength()-iNbCharParLigne);
        }
        else
        {
            csBuffer="";
        }
        return csRet;
    }
    2/ Une fonction qui ajoute un log dans ta CListBox:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    AjouteLogDansListBox(CString csLog)
    {
        int iNbChar = 10; //ce que tu veux
        CString csTemp = DecoupeString(csLog, iNbChar);
        while (!csTemp.IsEmpty())
        {
            MaListBox.AddString(csTemp);
            csTemp = DecoupeString(csLog, iNbChar);
        }
    }
    Je pense que c'est propre et efficace. Attention � bien param�trer ta CListBox dans l'�diteur de ressource.

    P.S: je n'aime pas faire le travail des modos, mais ils n'ont pas que �a � faire, alors je vais te donner quelques conseils sur la fa�on de poster:
    1/ utilise les balises, surtout la balise [code]. C'est une question de lisibilit�.
    2/ apprends � nommer correctement tes variables (pr�fixes cs<->CString, i<->int, etc.) comme �a, on sait tout de suite de quel type est la variable.
    3/ essaie d'�tre le plus pr�cis possible, �a fait gagner du temps aux gens qui vont essayer de te r�pondre, et comme disait je sais plus qui:
    Le temps et l'espace sont infinis, c'est pourtant ce qui me manque le plus.
    Sur ce, bonne impl�mentation. Ne prends pas mal mes remarques, c'est juste pour aider. Et n'h�site surtout pas � poser des questions.

    Hope it helps.

  10. #10
    fd
    fd est d�connect�
    Membre �prouv�
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Par d�faut
    sinon tu peux utiliser une console

    j'avais fait une petite classe pour debug (d'ou les #ifdef)

    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
     
     
    // ouvre une console pour debug (si TRACE_CONS defini)
     
    class Cconsole {
    	HANDLE m_hCons;
    public:
    	Cconsole();
    	~Cconsole();
    	void WriteStr(char *p);
    	void Printf(char *p,...);
     
    };
     
    Cconsole::Cconsole()
    {
    #ifdef TRACE_CONS
    	AllocConsole();
    	m_hCons = GetStdHandle(STD_OUTPUT_HANDLE);
    #endif
    }
     
    Cconsole::~Cconsole()
    {
    #ifdef TRACE_CONS
    	FreeConsole();
    #endif
    }
     
     
    void Cconsole::WriteStr(char *p)
    {
    #ifdef TRACE_CONS
    	DWORD num;
    	WriteConsole(m_hCons,p,strlen(p),&num,NULL);
    #endif
    }
     
    void Cconsole::Printf(char *p,...)
    {
    #ifdef TRACE_CONS
    	char Buffer[512];
    	va_list marker;
    	va_start( marker, p );
    	vsprintf(Buffer,p,marker);
    	va_end(marker);
    	DWORD num;
    	WriteConsole(m_hCons,Buffer,strlen(Buffer),&num,NULL);
    #endif
    }

Discussions similaires

  1. Utiliser les threads pour cr�er une fen�tre de LOG ?
    Par davidmarli dans le forum Langage
    R�ponses: 4
    Dernier message: 17/08/2011, 15h01
  2. Cr�ation d'une fen�tre ancrable dans visual studio
    Par Overkill78 dans le forum VB.NET
    R�ponses: 5
    Dernier message: 08/06/2009, 10h02
  3. Faire une fen�tre de log "au fil de l'eau"
    Par tio dans le forum Zend Framework
    R�ponses: 1
    Dernier message: 20/02/2009, 18h54
  4. Gerer plusieurs fen�tre WinForms avec Visual C++ 2008
    Par jlg_47 dans le forum D�buter
    R�ponses: 5
    Dernier message: 25/01/2009, 20h48
  5. Afficher une fen�tre de logging / debugging
    Par tnarol dans le forum MFC
    R�ponses: 8
    Dernier message: 12/05/2006, 15h24

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