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

Windows Discussion :

Pour qu'un programme graphique renvoit des infos sur stdout


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Pour qu'un programme graphique renvoit des infos sur stdout
    Bonjour,

    Je cherche à écrire un programme qui pourrait fonctionner soit en mode graphique, soit en ligne de commande. Après quelques recherches, il semble que ce ne soit pas possible : les flux de sortie standard (cout/cerr) ne renvoient vers rien lorsqu'ils sont utilisés au sein d'une application graphique Windows (c'est du moins ce que prétend la doc de la librairie wxwindows).

    Ceci est-il exact (a priori oui, puisque ni std::cout/cerr, ni les fonctions ad hoc de wxwindows ne donnent le moindre résultat) ?

    Et n'y-a-t-il pas quand même un moyen pour, par exemple, envoyer des infos vers la ligne de commande même si une fenêtre a été créée par le programme (comportement courant sous unix) ?

    Voui, je suis têtu

    Au fait, pour mes tests j'ai utilisé : Cygwin g++, Win Millenium, librairie wxwindows.

    Merci d'avance,

    Thomas

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    tu peux, même en mode graphique, allouer puis écrire dans une console
    (regarde AllocConsole() et GetStdHandle(... /* ex: STD_OUTPUT_HANDLE*/);

    avec ce handle tu dois pouvoir le mapper sur cout (a vérifier)
    sinon tu peux tjs écrire sur la console avec WriteConsole()

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup de ta réponse. Cependant, sur msdn.microsoft.com, ces fonctions font partie de la section "Character-Mode Applications". Je cite (http://msdn.microsoft.com/library/de...plications.asp) :

    Character-Mode Applications

    Consoles manage input and output (I/O) for character-mode applications (applications that do not provide their own graphical user interface).
    D'autre part, si j'utilise wxwindows, c'est que je veux une solution portable

  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 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    Il est ou le scandale j'ai pas suivi ?
    C'est faisable et fd t'as dit comment, par contre c'est pas portable. C'est MS only. Mais d'un autre coté, je sais pas trop ce que ça devrait faire sous Linux.
    Y'a cependant une solution simple et à priori portable, évoquée dans une discussion sur ce point dans MSDN Mag :
    http://msdn.microsoft.com/msdnmag/issues/04/02/CQA/default.aspx
    Créer 2 version de ton appli, une GUI et l'autre CUI. C'est tjrs la GUI qui est lancée, mais si elle est lancée en mode CUI, elle lance la version CUI (::wxExecute) et se termine...

    Pour mapper sur cout ou stdout, faut appeler des fonction de la CRT (freopen pour stdout, suivi de sync_with_stdio).
    Tout cela est bien expliqué ici :
    http://www.codeguru.com/Cpp/W-D/console/redirection/article.php/c3955
    Autre tres bon lien :
    http://dslweb.nwnexus.com/~ast/dload/guicon.htm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/12/2013, 19h56
  2. Réponses: 6
    Dernier message: 06/12/2013, 14h06
  3. Réponses: 25
    Dernier message: 11/06/2012, 16h39
  4. utilisation api shell pour lancer un programme en passant des paramètres
    Par criche dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 19/05/2012, 09h37
  5. recuperer des info sur le web via un programme
    Par lord_abdennour dans le forum C++
    Réponses: 1
    Dernier message: 02/09/2010, 15h46

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