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 :

réaliser un splash screeen avec GTK


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par défaut réaliser un splash screeen avec GTK
    Salut! S'il vous plait, j'aimerais comment réaliser un splash screen avec GTK+. Je sais que ça se fait, mais je ne sais pas comment. Merci de ma répondre.
    Eric

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    oui c'est possible, il suffit de créer une GtkWindow avec le type GTK_WINDOW_POPUP, ensuite tu colle une image dedans et voilà

  3. #3
    Membre confirmé Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par défaut
    ok! j'ai bien compris. comment faire attendre le splash screen durant quelques minutes?

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par doderic
    comment faire attendre le splash screen durant quelques minutes?
    Il existe surment plusieurs manières, voici celle que j'utilise :
    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
    static gboolean init_app (gpointer user_data)
    {
      /* Cree la fenetre principale de l'application */
      /* ... */
     
      /* destruction de l'ecran de demarrage */
      gtk_widget_destroy (GTK_WIDGET (user_data));
      return FALSE;
    }
     
    int main (int argc, char **argv)
    {
      /* Creation de l'ecran de demarrage */
      GtkWidget *p_splash_screen = NULL;
      /* ... */
     
      g_idle_add (init_app, &p_splash_screen);
     
      /* Boucle principale */
      gtk_main ();
      return 0;
    }

  5. #5
    Membre confirmé
    Profil pro
    responsable de développement
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : responsable de développement

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Par défaut
    On peut aussi garder le splash screen quelque temps devant l’interface principale, c’est plus joli.
    Voilà un extrait d’un de mes programmes…
    On devine que la structure de ihm contient des widgets.

    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
    guint SplahScreenId=0;
    gboolean  splahScreenOff(void *data)
    {
      if (SplahScreenId && ihm.SplahScreen && ihm.WindowMain) {
          gtk_widget_destroy(ihm.SplahScreen);
          ihm.SplahScreen = NULL;
          return FALSE;
        }
      }
      return TRUE;
    }
     
    void splahScreen()
    {
      int           x, y, wM, hM, wS, hS;
      char          file[]= "splahscreen.png";
      GtkWidget    *Image;
      GdkPixbuf    *Pix;
     
      wM = hM = wS = hS = -1;
      Image = gtk_image_new_from_file(file);
      if (NULL == Image) return;
      Pix = gtk_image_get_pixbuf (GTK_IMAGE(Image));
      wS  = gdk_pixbuf_get_width (Pix);
      hS  = gdk_pixbuf_get_height(Pix);
      ihm.SplahScreen = gtk_window_new(GTK_WINDOW_POPUP);
      gtk_window_set_resizable(GTK_WINDOW(ihm.SplahScreen), FALSE);
      gtk_window_set_policy    (GTK_WINDOW(ihm.SplahScreen), FALSE, FALSE, FALSE);
      gtk_window_set_position (GTK_WINDOW(ihm.SplahScreen), GTK_WIN_POS_CENTER);
      gtk_window_has_toplevel_focus (GTK_WINDOW(ihm.SplahScreen));
      gtk_container_add (GTK_CONTAINER(ihm.SplahScreen), Image);
      gtk_widget_realize(ihm.SplahScreen);
      gtk_widget_show_all(ihm.SplahScreen);
      SplahScreenId = gtk_timeout_add(3000, splahScreenOff, NULL);
    }
     
    GtkWidget *create_IHM(void)
    { // création de l'interface...
      //  ihm.WindowMain = gtk_windo...
      //  ...
      // on passe le Splash screen en avant...
      if (ihm.SplahScreen) {
        gtk_window_set_transient_for(GTK_WINDOW(ihm.SplahScreen), GTK_WINDOW(ihm.WindowMain));
      }
      return ihm.WindowMain;
    }
     
    int main (int argc, char *argv[])
    {
      gtk_init (&argc, &argv);
      gdk_rgb_init ();
      // ...
      splahScreen();
      windowMain = create_IHM();
      gtk_widget_show_all(windowMain);
      gtk_main();
      gMosaic_quit();
      close_log();
      return 0;
    }
    Avec GTK on n'a pas le droit de faire des trucs moche ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [utf-8] problème d'accents avec gtk+
    Par over_score dans le forum Général Python
    Réponses: 3
    Dernier message: 14/12/2005, 01h43
  2. [GTK]problème avec GTK+ sur DEV-C++
    Par afrikha dans le forum Dev-C++
    Réponses: 7
    Dernier message: 01/10/2005, 14h13
  3. [GTK]installer Dev-C++ avec gtk 1.2 ...
    Par vbcasimir dans le forum Dev-C++
    Réponses: 2
    Dernier message: 02/02/2004, 13h34

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