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

C++Builder Discussion :

Faire clignoter l'onglet de l'application dans la barre des tâches


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut Faire clignoter l'onglet de l'application dans la barre des tâches
    Bonjour à tous

    Comment pourrais-je faire pour faire clignoter l'onglet de mon application dans la barre des tâches, comme par exemple lorsque l'on recoit un message instantané dans Windows live Messenger (l'onglet deviens orange).

    Mon programme doit effectuer un traitement assez long. Si l'utilisateur fait autre chose, j'aimerais informer l'utilisateur lorsque le programme à terminé son traitement.

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut !

    Regarde du côté de l'API FlashWindow.

    A+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Il y a aussi SetForegroundWindow.

    A noter que contrairement a ce que son nom indique SetForegroundWindow ne mets pas l'appli en 1er plan mais anime la barre de tache. Le comportement a été modifié à partir de XP.

    yarp
    www.senosoft.com

  4. #4
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Merci pour votre aide.

    En fait, j'ai trouver quelques choses dans la FAQ Visual C++ concernant FlashWindow et cela fonctionne.

    Par contre maintenant, j'ai un souci, Comment puis-je faire pour détecter que mon application est réduite car si celle-ci n'est pas réduite, je n'ai pas besoin de faire clignoter la barre des tâches.

  5. #5
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Re !

    Y a la propriété WindowState de tes Forms, je croi que tu peux les utiliser !

    a+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    => SetForegroundWindow .

  7. #7
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    en utilisant la propriété windowsState, cela ne fonctionne pas

    Voilà mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Si la fenetre principale est minimisée
    if(PrincipalForm->WindowState == wsMinimized)
    {
          // On va faire clignoter la bare des tache si l'application est réduite
          FLASHWINFO fwi;
          fwi.cbSize = sizeof(fwi);
          fwi.hwnd = Application->Handle;
          fwi.dwFlags = FLASHW_TRAY;
          fwi.uCount = 20;
          fwi.dwTimeout = 0;
     
          FlashWindowEx(&fwi);
    }
    J'ai essayé en cliquant également sur le bouton Minimiser au dessus et pareil rien ne se passe, et d'ailleurs je ne peut m^meme plus maximiser mon application.

  8. #8
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Personne ne peut m'aider ?

  9. #9
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut !

    Esque ça te va ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    if(!IsWindowVisible(PrincipaleForm->Handle))
                 FlashWindow(Application->Handle,true);


    A+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  10. #10
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    J'ai une erreur a la compilation sur la ligne FlashWindow, cela me dit qu'il manque une )

    et quand je me sert juste du if et que je colle mon code cité plus haut, rien ne se passe.

  11. #11
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    perso, le code compile très bien...'tit copier-coller.

    en revanche, c'est vrai que le if ne semble pas suffisant, je cherche mais pas lgtps parce qu'on s'en fout un peu ..au pire je mets le FalshWindow direct
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  12. #12
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    re,
    bon j'ai opté pour ça, et ça fait bien ce que j'attends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      do
                SetForegroundWindow(mainForm->Handle);
             while  (Application->Active == false);
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  13. #13
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut !

    Citation Envoyé par Interruption13h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    if(!IsWindowVisible(PrincipaleForm->Handle))
                 FlashWindow(Application->Handle,true);
    ça marche très bien chez moi, ça, j'ai l'ai essayé avec un Timer, et dés que je mimimise la fenêtre ça flash dans la barre de tâche !

    Ché pas ou est le problème



    Bonne chance !
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  14. #14
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Moi non plus je comprend pas pourquoi cela ne fonctionne pas avec ta solution Interruption13h car j'ai fait un bète copier coller. je vais étudié cela de plus prèt.

    Pour la tienne say, cela marche nikel, merci d'ailleurs mais cela ne clignotte pas, c'est fixe et moi j'aimarais que cela clignote.

  15. #15
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    ouaip, c'est vrai, ça clignote une fois ou deux et puis c'est fixe.
    Avec un timer, ça devrait le faire.
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  16. #16
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Voilà j'ai réussi à faire ce que je voulais

    voici mon code

    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
     
    // Si l'application n'est pas active
    if(!Application->Active)
    {
        // On va faire clignoter la barre des tache
        FLASHWINFO fwi;
        fwi.cbSize = sizeof(fwi);
        fwi.hwnd = Application->Handle;
        fwi.dwFlags = FLASHW_TRAY;
        fwi.uCount = 20;
        fwi.dwTimeout = 0;
     
        FlashWindowEx(&fwi);
     
        // Tant que l'application n'est pas active
        while(!Application->Active)
        {
            // On attend
            Application->ProcessMessages();
        }
     
        // On va arrêter le clignotement
        fwi.dwFlags = FLASHW_STOP;
     
        FlashWindowEx(&fwi);
    }
    Je n'ai pas utilisé de timer car avec cette méthode il est géré automatiquement.

    Merci à tous pour votre aide.

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

Discussions similaires

  1. Masquer l'application dans la barre des tâches
    Par jmjmjm dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/11/2016, 12h50
  2. Réponses: 4
    Dernier message: 05/06/2015, 22h02
  3. Réponses: 0
    Dernier message: 06/06/2011, 14h06
  4. Icone d'application dans la barre des tâches
    Par youcef81 dans le forum C++Builder
    Réponses: 5
    Dernier message: 06/06/2006, 22h09
  5. Ajouter une icône d'une application dans le barre des tâches
    Par Lorponos dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 13/05/2006, 19h41

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