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

GTK+ avec C & C++ Discussion :

Positionner menu en haut


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut Positionner menu en haut
    Bonsoir tout le monde


    J'ai un probleme, mon menu est positionné au millieu de la fenêtre

    Voici les codes

    le 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    #include "structure.h"
    #include "composant.c"
    #include "action.c"
     
     
    struct composant e;
     
    void OnQuitter(GtkWidget* widget, gpointer data);
     
     
    int main (int argc, char *argv[])
    {
     
     
      g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
      gtk_init (&argc, &argv);
      g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
     
     
      e.win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_container_set_border_width (GTK_CONTAINER (e.win), 8);
      gtk_window_set_title (GTK_WINDOW (e.win), "Mytext");
      gtk_window_set_position (GTK_WINDOW (e.win), GTK_WIN_POS_CENTER);
      gtk_widget_realize (e.win);
      gtk_window_maximize(GTK_WINDOW (e.win));
      g_signal_connect (e.win, "destroy", gtk_main_quit, NULL);
     
     
      e.vbox = gtk_vbox_new (TRUE, 6);
      gtk_container_add (GTK_CONTAINER (e.win), e.vbox);
     
     
     e.menubar = gtk_menu_bar_new();
     e.menu = gtk_menu_new();
     e.menuitem = gtk_menu_item_new_with_label("Nouveau");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     e.menuitem = gtk_menu_item_new_with_label("Ouvrir");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     e.menuitem = gtk_menu_item_new_with_label("Enregistrer");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     e.menuitem = gtk_menu_item_new_with_label("Enregistrer_sous");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
    e.menuitem = gtk_menu_item_new_with_label("Mise en page");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     e.menuitem = gtk_menu_item_new_with_label("Imprimer");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     e.menuitem = gtk_menu_item_new_with_label("Quiter");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     
     e.menuitem = gtk_menu_item_new_with_label("Fichier");
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(e.menuitem), e.menu);
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menubar), e.menuitem);
     
     
     
      e.menu = gtk_menu_new();
     
      e.menuitem = gtk_menu_item_new_with_label("Retour");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     e.menuitem = gtk_menu_item_new_with_label("Suivant");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
      e.menuitem = gtk_menu_item_new_with_label("Couper");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     e.menuitem = gtk_menu_item_new_with_label("Coller");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
     
     
     e.menuitem = gtk_menu_item_new_with_label("Edition");
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(e.menuitem), e.menu);
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menubar), e.menuitem);
     
     e.menu = gtk_menu_new();
     
     e.menuitem = gtk_menu_item_new_with_label("Image");
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menu), e.menuitem);
     
    e.menuitem = gtk_menu_item_new_with_label("Insertion");
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(e.menuitem), e.menu);
     gtk_menu_shell_append(GTK_MENU_SHELL(e.menubar), e.menuitem);
     
     
     
     
    gtk_box_pack_start(GTK_BOX(e.vbox), e.menubar, FALSE, FALSE, 0);
     
     
      gtk_widget_show_all (e.win);
      gtk_main ();
      return 0;
    }

    Structure
    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
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
     
    #ifndef structure_H
    #define structure_H
     
    struct composant
    {
     
      GtkWidget *menu;
      GtkWidget *menuitem;
      GtkWidget *menubar;
      GtkWidget *button;
      GtkWidget *win;
      GtkWidget *vbox;
      GtkWidget *fermer;
    };
    #endif

    Composant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include "structure.h"
    extern struct composant e;
    Pour le moment le fichier action est vide, elle contiendra les actions sur les composants.

    Que dois je faire pour avoir mon menu en haut.

    Merci

    Cordialement

    A bientôt

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Bon, j'ai pas tout regardé mais y'a certaines choses à redire à ton code !


    Déjà, les corrections pour ton problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.vbox = gtk_vbox_new (FALSE, 6);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_box_pack_start(GTK_BOX(e.vbox), e.menubar, FALSE, FALSE, 0);
    Ceci fait ton problème est résolu !


    Maintenant les choses vraiment sérieuses:
    • On n'inclut pas de fichier source, uniquement des headers (*.h) ! Sauf éventuellement quelques exceptions que je ne connais pas mais dont j'ai déjà entendu parler mais plus que rares !
    • Pourquoi faire une variable du type de ta structure en extern ? Je ne vois pas l'intérêt, il faut même éviter autant que faire se peut les déclarations globales !


    Pour ton fichier action, ce que tu peux faire, c'est de créer un fichier d'interface callback.h et son fichier source callback.c.

    Ensuite, un fichier juste pour ta structure ... je sais pas trop, sans compter que tu créé un variable globale, ce qui n'est franchement pas trop conseillé. Si tu veux que ta structure soit visible depuis plusieurs fichiers ok, tu peux la laisser dans ton fichier structure.h mais enlève la délcaration de la variable globale !

    Tu peux remplacer ta variable globale par une variable de courte portée comme par exemple dans le main uniquement et ensuite, tu passes ta structure en argument aux fonctions qui doivent la traiter, là tu sécurise plus ton application !

    Si je puis te donner un autre conseil, essaye de créer une fonction spécifique à la création de la fenêtre et dans celle-ci essaye de créer des fonctions privées pour les différentes parties de la fenêtre ce qui pourrais te donner ce style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    main
      |___ create_window
              |_____ create_menus
              |_____ create_content (création de la partie centrale de la fenêtre)
    Ceci fait, ton application sera découpée en plus petites parties spécialisées dans une tâche précise et ton code sera plus lisible également donc un gain de temps dans la maintenance du programme !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Par défaut
    Bonjour tout le monde

    Ca y est le probleme est résolu.

    Ce que tu m'explique est tres intéréssent.

    Il faudrait que je vois ca sur un livre ou une doc, car notre prof nous fais cours à la va vite.

    Il faudrais que je sache quel theme étudier.

    Merci

    Cordialement

    A bientôt

Discussions similaires

  1. [WordPress][Plugin] Positionner un menu de haut niveau
    Par Antoine_935 dans le forum WordPress
    Réponses: 4
    Dernier message: 04/02/2011, 15h33
  2. Le menu du haut, le menu de la fenetre, le titre
    Par Cazaux-Moutou-Philippe dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 15/06/2008, 23h35
  3. Problème de positionnement menu horizontal
    Par bogsy15 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 03/07/2007, 08h13
  4. Fenetre Modal positionnement dans le haut de la popup
    Par ozzmax dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/05/2007, 15h11
  5. bloquer un tableau menu en haut a gauche
    Par totoranky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 05/10/2004, 01h07

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