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 :

Comment lancer une application dans une autre


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Par défaut Comment lancer une application dans une autre
    Bonjour, je souhaite lancer mon programme wxwidgets a partir d'un premier programme.
    Comment faire pour l'appelé et l'initialise correctement ? merci.

  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,
    Ton premier programme est aussi une application wxWidgets ? A ce moment, je te conseille de t'intéresser à ::wxExecute et wxProcess.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Par défaut
    Bonjour 3DArchi,

    c'est pas un .exe que je cherche a lancer, c'est une wxApp.
    Le problème c'est que j'ai déjà une wxApp !

    J'utilise des méthodes de la RTTI wxWidgets dans mon programme qui doit être lancer. Quand je le lance seul tout fonctionne, mais j'ai une contrainte; le programme doit être lancé avec un programme fédérateur, du coup je me retrouve avec deux wxApp ! conflit !

    Merci.

  4. #4
    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
    Bizarre. Je ne suis pas sûr que l'on puisse avoir plusieurs wxApp dans un même programme. Quel est l'objectif : récupérer l'existant pour construire une appli avec plusieurs existantes ? Faire du multi threading ?

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 47
    Par défaut
    C'est un service fait en wxWidgets donc avec une wxApp qui tourne en attente de commande. Quand une commande est reçu le service va charger mon deuxième programme (donc wxApp).


    Admettons que je n'utilise plus les wxWidgets pour le code du service (lanceur) Comment faire pour initialisé/instancié une wxApp dans du code c++?

  6. #6
    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
    Citation Envoyé par abcdefg Voir le message
    C'est un service fait en wxWidgets donc avec une wxApp qui tourne en attente de commande. Quand une commande est reçu le service va charger mon deuxième programme (donc wxApp).


    Admettons que je n'utilise plus les wxWidgets pour le code du service (lanceur) Comment faire pour initialisé/instancié une wxApp dans du code c++?
    Je ne suis pas sûr que le problème vienne de wxApp. Cela doit plutôt être lié à l'unicité de la boucle de message dans un thread. Ensuite, je ne sais pas s'il est possible de déclencher une boucle de message dans un service (au sens windows, c'est ça). Pourquoi tes wxApp ne sont pas des applications séparées ?

    Sinon, je pense qu'il faudrait alors légèrement changer ton architecture pour faire avec wxApp un pont vers l'application courante (ou une chaîne avec plusieurs application). L'idée est que tu créés une interface abstraite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class IAppliImpl :public wxEvtHandler
    {
    public:
       virtual ~MonAppli()=0;
       virtual bool OnInit()=0;
    //...
    };
    wxDECLARE_SCOPED_PTR(IAppliImpl, IAppliImplSmartPtr);
    // ne pas oublier le wxDEFINE_SCOPED_PTR dans le .cpp
    Tu maintiens une seule wxApp :
    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
     
    class MonAppli : public wxApp
    {
    public:
    //...
        virtual bool OnInit();
     
    private :
       IAppliImplSmartPtr mp_app_courante;
    };
     
    // dans le cpp
    bool MonAppli::OnInit()
    {
       mp_app_courante.reset(CreerApplication());
          // CreerApplication est une méthode qui implémente
          // une classe concrète dérivée de IAppliImpl.
       mp_app_courante->OnInit();
       SetNextHandler(mp_app_courante);
    }
    Idem pour toute les fonctions de wxApp que tu souhaites prendre en charge.

    Ensuite chacune de tes wxApp actuelles, tu les changes en :
    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
     
    class Appli1 : public IAppliImpl 
    {
       virtual ~MonAppli();
       virtual bool OnInit();
    // ...
    };
     
    class Appli2 : public IAppliImpl 
    {
       virtual ~MonAppli();
       virtual bool OnInit();
    // ...
    };
    // etc...
    Quand tu souhaites changer d'application, tu n'as plus qu'à remplacer mp_app_courante dans MonAppli.
    Si tu souhaites avoir plusieurs application en même temps, alors au lieu d'utiliser un pointeur dans MonAppli, tu utilises une liste (ou un tableau)...

    L'idée général qui me vient est celle là. A toi de voir si cela peut s'adapter à ton besoin. Ma question première étant toujours : pourquoi ne pas avoir des processus séparé ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2015, 17h52
  2. [Lazarus] Transférer une unité d'une application dans une autre
    Par Tolede37 dans le forum Lazarus
    Réponses: 2
    Dernier message: 29/05/2015, 18h28
  3. Réponses: 6
    Dernier message: 11/06/2009, 18h16
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Lancer des applications dans une application
    Par n_nikko dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/03/2007, 20h53

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