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

wxWidgets Discussion :

C++ versus wxWidgets


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de mess-mate
    Inscrit en
    Septembre 2008
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 352
    Par défaut C++ versus wxWidgets
    Bonjour,
    J'ai une question qui me chiffonne un peu...
    Dans un programme en C++ on inclut des messages d'erreur par ex. lors d'une non-ouverture d'un fichier.
    - Cependant dans wxWidgets cela est dejà prévu si je ne me trompe. (la classe de manipulation de fichiers)

    Faut-il vraiment reécrire le code si on veut utiliser wxWidgets ou existe-il un moyen afin d'avoir un message pop-up lors d'une erreur ?

    Voici mon C++:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!f2.write((char *)&rec,(unsigned)sizeof(int))) cout<<"Write REC failed !"<<endl ;
    amicalement

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Je ne sais pas si cela répondra complètement à ton problème, mais tu peux déjà regarder autour de wxLog pour ce qui est d'informer l'utilisateur d'erreurs.

  3. #3
    Membre chevronné Avatar de mess-mate
    Inscrit en
    Septembre 2008
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 352
    Par défaut
    Bonjour,
    je me suis mal exprimé...
    J'ai donc transformé un programme en C vers du C++, dont un exemple de code dans le 1er message.
    Je voudrais maintenant utiliser les wxWidgets, mais d'après mes recherches dans les classes de wx il y a déjà de quoi ( file handling) prévu, non ?
    Donc:
    1- soit je reécris le programme avec la librairie de wx
    2- soit je trouve un moyen de tranformer le "cout" qui est un avertissement d'erreur comme on peut constater, dans un pop-up de fenêtre ou autre.
    3- soit je me fais quelques classes moi-même afin d'en sortir rapidement.

    Si possible j'aimerais plustôt la solution 2 pour laquelle je demande un peu d'aide.

    amicalement
    PS: je vais quand-même regarder ce que ce wxLog fait exactement.

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Bonjour,

    Oui c'est possible pour la version ‘2’ de le faire évoluer pour le sortir dans une fenêtre de log.

    Il faut créer un 'wxTextCtrl' avec l'option 'wxTE_MULTILINE'.

    Puis l'utiliser de cette manière.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Ajouter le textctrl dans du GUI
    wxTextCtrl *mTextLog = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxSize(-1, 60), wxTE_MULTILINE|wxTE_READONLY); 
     
    ....// ailleurs
     
    if(mTextLog )
    	*mTextLog << log << L"\n";

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Je vais insister avec mon wxLog:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(!f2.write((char *)&rec,(unsigned)sizeof(int))) cout<<"Write REC failed !"<<endl ;
    Peut devenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(!f2.write((char *)&rec,(unsigned)sizeof(int))) 
                  wxLogMessage("Write REC failed !");
    L'avantage, c'est que tu peux configurer pour que tout ça aille vers un fichier (wxLogStderr ou wxLogStream), vers une fenêtre console (wxLogWindow), vers un TextControl de ton IHM (wxLogTextCtrl), vers la solution la plus adéquate (wxLogGui) ou vers ton propre système de log (CMonLog:: public wxLog). Ils peuvent être différents en debug et release ou même être activés et modifiés dynamiquement. Que du bonheur
    L'inconvénient, c'est que tu ne bénéficie pas des opérateurs '<<' et qu'il te faut tout réécrire à la sauce wxLogMessage(format, arguments).

  6. #6
    Membre chevronné Avatar de mess-mate
    Inscrit en
    Septembre 2008
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 352
    Par défaut
    Merci pour les hints...
    Je vais essayer les 2 propositions.
    Je commence par: wxLogMessage("Write REC failed !");
    et là j'ai l'erreur
    cannot convert 'const char*' to 'const wxChar*' for argument '1' to 'void wxLogMessage(const wxChar*, ...)'

    Je vois pas très bien ce que wxChar* fait la dedans vu que: void wxLogMessage (const char * formatString,.... )
    ( j'ai bien inclus le wx/log.h bien sûr)
    Attention: je parle d'une fonction externe 'makedata' en c++ qui est appelée lors d'un 'button event', si cela pourrait avoir une influence pour le wxWidget.

  7. #7
    Membre chevronné Avatar de mess-mate
    Inscrit en
    Septembre 2008
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 352
    Par défaut
    Bonsoir,
    je voudrais tester cette solution du fait qu'elle pourrait rester dans la même fenêtre.
    Mais ....
    Citation Envoyé par Ti-R Voir le message
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Ajouter le textctrl dans du GUI
    wxTextCtrl *mTextLog = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxSize(-1, 60), wxTE_MULTILINE|wxTE_READONLY); 
     
    ....// ailleurs
     
    if(mTextLog )
    	*mTextLog << log << L"\n";
    *mTextLog qui est un control me pose problème de déclaration quoi que je fasse du genre 'invalid operands of types'.

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    As-tu rajouté le bon include?

Discussions similaires

  1. [Débat] MERISE versus UML ? Avenir de MERISE ?
    Par Matthieu Brucher dans le forum Méthodes
    Réponses: 51
    Dernier message: 15/02/2022, 17h32
  2. C# versus Java
    Par laffreuxthomas dans le forum C#
    Réponses: 368
    Dernier message: 30/03/2019, 22h59
  3. Que choisir : PHP versus Java ?
    Par Sniper37 dans le forum Général Conception Web
    Réponses: 164
    Dernier message: 28/04/2009, 16h50

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