Bonjour, je souhaite lancer mon programme wxwidgets a partir d'un premier programme.
Comment faire pour l'appelé et l'initialise correctement ? merci.
Bonjour, je souhaite lancer mon programme wxwidgets a partir d'un premier programme.
Comment faire pour l'appelé et l'initialise correctement ? merci.
Bonjour,
Ton premier programme est aussi une application wxWidgets ? A ce moment, je te conseille de t'intéresser à ::wxExecute et wxProcess.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
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.
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 ?
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
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 :
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 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
Idem pour toute les fonctions de wxApp que tu souhaites prendre en charge.
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); }
Ensuite chacune de tes wxApp actuelles, tu les changes en :
Quand tu souhaites changer d'application, tu n'as plus qu'à remplacer mp_app_courante dans MonAppli.
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...
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é ?
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager