Bonjour a tous

Je souhaiterais ouvrir une fenêtre en plus de ma fenêtre principal. (Fenêtre d'options, avec onglets etc....).

J'ai une fenetre principal :
Fonction Main qui ouvre le formulaire principal:
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
int main(int argc,char **argv)
{
 
    // Declaration du formulaire
    cls_FrmPrincipal FrmPrincipal;
 
 
    // Initialisation de GTK
    gtk_init(&argc,&argv);
 
    // Affichage du formulaire
    FrmPrincipal.show();
 
    // Démarrage de la boucle évènementielle
    gtk_main();
 
    return RETOK;
 
}

Fonction Show du formulaire principal:
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
 
/* ----------------------------------------------------
			show
  ----------------------------------------------------- */
void cls_FrmPrincipal::show()
{
 
    // Creation de la fenetre
    this->pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
    [...]
 
    // Connexion du signal "destroy"
    g_signal_connect(G_OBJECT(this->pWindow), "destroy", G_CALLBACK(OnDestroy), NULL);
 
    // Dessine la page
    drawPage(this);
 
    // Affichage de la fenetre
    gtk_widget_show_all(this->pWindow);
 
 
}

J'ai un bouton dans mon formulaire qui me permet d'ouvrir mon deuxième formulaire.
Voici la fonction de callback qui me permet d'ouvrir mon deuxième formulaire:
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
void cb_evt_Click_CmdRecDirect(GtkWidget *p_widget, gpointer user_data)
{
 
    // On recupere le clsParent en parametre (Classe du Formulaire Principal)
    cls_FrmPrincipal *clsParent;
    clsParent = (cls_FrmPrincipal *) user_data;
 
    // Déclaration du Deuxieme formulaire
    cls_FrmRecDirect FrmRecDirect(clsParent);
 
    // Affichage du deuxieme formulaire (Modal)
    FrmRecDirect.show();
 
    // Demarrage de la boucle évènementielle
    gtk_main();
 
}
J'ai un bouton dans mon deuxième formulaire qui me permet de le fermer.
Voici la fonction de callback qui me permet de fermer mon deuxième formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
void cb_evt_Click_CmdAnnuler(GtkWidget *p_widget, gpointer user_data)
{
    cls_FrmRecDirect *clsParent;
 
    // On recupere le clsParent en parametre
    clsParent = (cls_FrmRecDirect *) user_data;
 
    gtk_widget_destroy(clsParent->pWindow);
 
    gtk_main_quit();
 
}

J'ai un problème de mémoire et je ne sais pas si ca vient de là!

Voila donc ma question:

Est-ce la bonne méthode pour ouvrir un deuxième formulaire (en modal, sans bordure, en définissant les mêmes paramètres que la fenêtre principal). Deux boucles gtk_main(); dans un même programme ne pose pas de problèmes?

Beaucoup d'exemples utilisent des gtk_dialog_new() ou des extensions avec boutons. Mais je ne comprend pas (j'ai regardé vite fait) comment faire des formulaires plus complexe que saisir un nom, de les mettre en modals, de les personnalisés.

Si quelqu'un pouvait me conseiller, me guider... vers une façon propre de faire!

Merci à tous