Bonjour à tous,

Je rencontre un problème lors de l'intégration d'une IHM développée avec wxWidget à l'intérieur d'une application c++ "classique".

Je m'explique:

J'ai développé une application serveur. J'instancie un objet serveur d'une classe serveur que j'ai également crée. Voici le code, extrêmement simple de mon application serveur ServeurApp.cpp:

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
25
26
27
28
 
#include <iostream.h>
#include "serveur.h"
 
#define PORT 12345
#define MAX_CLIENTS 5
 
int main(int argc, char **argv)
{
       int ret;
       /*! Creation d'une instance de la classe serveur */
	serveur *ServeurDLL = new serveur( PORT, MAX_CLIENTS );
	/*! Initialisation du serveur */
	if((ret = ServeurDLL->init()) != 0)
	{
	    printf("Erreur %i durant l'initialisation du serveur\n", ret);
		return -1;
	}
	/*! Lancement du serveur */
	if((ret = ServeurDLL->start()) != 0)
	{
	    printf("Erreur %i durant le lancement du serveur\n", ret);
		return -1;
	}
 
	return 0;
 
}

D'un autre côté, j'ai également développé une IHM pour mon serveur. Pour cela j'ai utiliser wxWidget (c'est la première fois que je l'utilise). J'ai donc crée une classe "FenetreServeur" qui dérive de wxFrame dans laquelle je crée mes contrôles. Pour l'utiliser, j'ai crée un fichier IHMApp.cpp:

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
 
 
#include "main.h"
#include "FenetreServeur.h"
 
bool IHMApp::OnInit()
{
 
   FenetreServeur *fenetre=new FenetreServeur();
 
   fenetre->Show();
 
   return true;
}
 
IMPLEMENT_APP(IHMApp);
Les deux applications fonctionnent indépendament. Ce que j'aimerai, et que je n'arrive pas à faire, c'est de pouvoir créer mon objet fenetre dans le main de mon fichier ServeurApp.cpp afin d'utiliser mon IHM avec mon serveur. Pour cela, j'ai intégré les fichiers FenetreServeur.h et .cpp a mon projet serveur et j'ai modifié ma fonction main:

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
25
26
27
 
int main(int argc, char **argv)
{
       int ret;
 
       /*! Creation d'une instance de la classe serveur */
	serveur *ServeurDLL = new serveur( PORT, MAX_CLIENTS );
 
       FenetreServeur *fenetre=new FenetreServeur();
       fenetre->Show();
 
	/*! Initialisation du serveur */
	if((ret = ServeurDLL->init()) != 0)
	{
	    printf("Erreur %i durant l'initialisation du serveur\n", ret);
		return -1;
	}
	/*! Lancement du serveur */
	if((ret = ServeurDLL->start()) != 0)
	{
	    printf("Erreur %i durant le lancement du serveur\n", ret);
		return -1;
	}
 
	return 0;
 
}
Malheureusement, cela ne fonctionne pas... Auriez-vous des pistes? Pour info, j'utilise code::blocks sous GNU/Linux

Merci d'avance