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

Windows Discussion :

Shell_NotifyIcon joue au chat et à la souris ?


Sujet :

Windows

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut Shell_NotifyIcon joue au chat et à la souris ?
    Salut tout le monde,

    j'ai un petit problème avec la fonction Shell_NotifyIcon. Je crée un icône dans la zone de notification à côté de l'horloge. Jusque là tout va bien l'icône s'affiche sans problème et je suis capable de faire apparaître des infos-bulles.

    Le problème est que lorsque je passe la souris sur mon icône celui-ci disparait immédiatement !
    Cela peut il venir du fait que je ne traite pas le message WM_MOUSEMOVE dans ma fonction callback (je sais que Shell_NotifyIcon utilise la fonction callback de façon un peu spéciale...cf le site MSDN) ?

    Voilà en gros mon code (C++ Builder 6) :

    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
    // Création de l'icone de notification :
       n_icon->LoadFromFile("h:\\sd.ico");
       notify_icon.hIcon = n_icon->Handle;
       notify_icon.uID = 0;
       notify_icon.uFlags = NIF_ICON;
       notify_icon.cbSize = sizeof ( NOTIFYICONDATA );
       notify_icon.uCallbackMessage = CM_NOTIFYICON;
       
       if ( !Shell_NotifyIcon( NIM_ADD, &notify_icon ) )
          MessageDlg("impossible de créer l'icone de notification", mtError,
             TMsgDlgButtons&#40;&#41; << mbOK, 0&#41;;
    
    // La fonction qui traite les messages en provenance de l'icone de notification &#58;
    
    void __fastcall TMainForm&#58;&#58;CMNotifyIcon&#40;TMessage &Message&#41;
    &#123;
       if &#40; Message.LParam == &#40;int&#41; WM_LBUTTONDBLCLK &#41;
         // Double cliqué sur l'icone -> on affiche
         Show&#40;&#41;;
       else if &#40; Message.LParam == &#40;int&#41; WM_LBUTTONDOWN &#41;
       &#123; // Simple clique gauche &#58; bulle avec nombre en attente
          Notify&#40; "Attente de "+IntToStr&#40;ListBox1->Items->Count&#41;
             + " utilisateurs...", "mIRC - Is Here est actif", mtInformation &#41;;
       &#125; else if &#40; Message.LParam == &#40;int&#41; WM_RBUTTONDOWN &#41;
       &#123; // Simple clique droit &#58; menu contextuel
         TPoint pos;
         GetCursorPos&#40; &pos &#41;;
         GlobalPopup->Popup&#40; pos.x, pos.y &#41;;
       &#125;
    &#125;
    Voilà j'espère que quelqu'un poura m'aider à résoudre ce petit problème !

    Merci d'avance pour votre aide,

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Par défaut
    Salut,

    Personnellement je pencherai plutot pour une perte du handle de ton notify_icon.hIcon et que amener la souris sur ton curseur amène un raffraichissement de ton icone, hors le handle n'est plus valide....

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Eh bien.........c'est une bonne idée...
    Mais dans ce cas je ne vois pas trop pourquoi. J'utilise C++ Builder et je charge mon icone via la classe TIcon.

    Mon instance de cette classe reste valide tout au long de l'execution de mon programme....

    Je vais encore explorer cette piste....merci beaucoup !

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Eh bien....en fait tu avais raison.
    Dans mon code j'oubliait d'initialiser la propriété hWnd de mon icône.

    Merci !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/04/2010, 16h36
  2. [VB6] Des labels qui réagissent à la souris
    Par murielle dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/10/2002, 14h19
  3. Trouver le composant sous la souris...
    Par BestofMac dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/07/2002, 02h46
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 18h54
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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