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

C++ Discussion :

Rediriger cerr<< ver un MessageBox


Sujet :

C++

  1. #1
    Membre habitué
    Inscrit en
    Avril 2002
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 180
    Points : 157
    Points
    157
    Par défaut Rediriger cerr<< ver un MessageBox
    Salut

    est-it possible de rediriger cerr<< pour l,afficher dans un AfxMessageBox()

    merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    C'est plutôt un problème de C++ à vrai dire. Je déplace y'a plus de chances dans le forum C++.
    Une solution que j'avais explorée pour cout c'est de remplacer le filebuf par le tient via un std::cerr.rdbuf( &mon_filebuf ); Un truc du genre:
    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
     
    template<class Elem, class Traits>
    class afx_filebuf :
        public std::basic_filebuf<Elem, Traits>
    {
    protected:
        virtual std::streamsize xsputn(const Elem *Ptr, std::streamsize Count)
        {
            // recopier <Count> chars dans une chaine et l'afficher
        }
    };
     
    // object static (devrait etre singleton) utilisé pour modifier cerr
    struct InitAfxCerr
    {
        // code de modif dans le constructeur
        InitAfxCerr()
        {
            std::cerr.rdbuf( &this->afxbuf );
        }
        afx_filebuf<char, std::char_traits<char> > afxbuf;
    };
     
    static InitAfxCerr init_afxcerr;
    Je laisse Luc commenter son approche à base de locale
    http://hermitte.free.fr/Info/C++/locale.tar.gz

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Oulah! C'est vieux ce que j'avais fait. Le but était de changer des facets pour traiter les problèmes liés à la locale. Typiquement les problèmes d'accents. Le résultat était moyennement convaincant dans la mesure où les cin/cout/... de VC6 ne pouvaient pas être imbués et que je n'avais pas trouvé comment correctement lire avec accents avec cette approche.
    Bref. Cela n'avait pas grand raport avec le problème de Philippe.

    L'approche qui consiste à définir son propre streambuffer est celle qui me parait la plus idiomatique -- c'est comme cela que l'on procède pour communiquer via sockets avec les flux du C++.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    J'avais utilisé ça pour modifier les accents sur cout. ca marche si on affiche des string / char *, mais pas si on affiche un caractère unique...

Discussions similaires

  1. Rediriger cerr vers un fichier
    Par insomniak dans le forum C++
    Réponses: 15
    Dernier message: 30/05/2006, 08h27
  2. Réponses: 2
    Dernier message: 09/05/2006, 15h52
  3. Rediriger le System.out vers un JTextPane/JtextArea
    Par cw_nico dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/04/2006, 15h41
  4. SendKeys vers un messagebox
    Par pee dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 21/12/2005, 12h39
  5. rediriger la sortie standard vers un textarea
    Par gromite dans le forum Composants
    Réponses: 9
    Dernier message: 10/05/2004, 11h07

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