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 :

Type des infos-bulles de la barre de notification


Sujet :

C++Builder

  1. #1
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut Type des infos-bulles de la barre de notification
    Bonjour,
    J'ai une petite question 'à la con'....resumée en partie par le titre de ce sujet.
    En effet, en utilisant le TTrayIcon j'ai bien mon appli et son petit icne dans la barre de notification mais je n'ai qu'un ridicule 'Hint' alors que je voudrais pouvoir faire comme certains programmes 'pro' :
    une bulle d'info avec insertions d'icones en plus du texte et interactive, c'est a dire qu'elle puisse réagir au click par exemple.

    Comment dois je m'y prendre ?
    Merci d'avance,
    @ +

  2. #2
    Membre habitué

    Profil pro
    Cadre
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 168
    Points
    168
    Par défaut
    J'avais posé la question il y a quelque temps, mais personne n'avais su me répondre, je suis intéressé aussi donc!

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Citation Envoyé par Tenguryu
    J'avais posé la question il y a quelque temps, mais personne n'avais su me répondre, je suis intéressé aussi donc!

    Ah ben, au moins chui pu tout seul...cool
    Bon on cherche ensemble ? Tu vas a droite, je prendre a gauche ?

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    re,

    Peut être faut il, si j'ai bien compris, regarder du côté de ToolTip Controls (vu dans l'aide SDK Windows de Builder)
    Je vais regarder ça et essayer de piger (c'est pas gagné ... )

    @ +

  5. #5
    Membre habitué

    Profil pro
    Cadre
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 168
    Points
    168
    Par défaut
    J'ai trouvé ça, mais je capte pas trop, pasque moi et les MFC...

    http://www.codeproject.com/shell/Liv...&select=726813

  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
    Tu peux arriver à faire cela en implémentant une classe dérivée de THintInfo dans le OnHintHandler de ton application.

    L'astuce consiste uniquement à dessiner dans la fenêtre désignée par THintInfo.
    La procédure de dessin que tu as, par exemple, dans l'exemple MFC que tu cite tu pourras la récupérer dans la procédure de dessin de la fenêtre que tu utiliseras pour faire le rendu.

    Yarp
    www.senosoft.com

  7. #7
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Effectivement,
    Cela semble être la bonne piste que j'aurais du suivre depuis le début.
    En plus, il y a presque du 'pré-maché' grace a un forumeur acharné...mais je m'auto-pardonne la source date d'il y a 2 ans :
    ici, un petit monologue de jpc34 qui a l'air d'avoir bien travaillé

    Merci,
    @ +

  8. #8
    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
    Oui, c'est tout à fait ça. Tu pourra surement trouver d'autres exemples - en Delphi - en cherchant THintInfo & THintWindow sur google.

    Ce ne sont pas les exemples d'Info bulle qui manquent.

    Yarp
    www.senosoft.com

  9. #9
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Donc merci a yarp et a jpc34, il semble que je sois presque sorti d'affaire...
    J'ai fait qq essais, et je commence a y trouver mon compte. Cela ressemblerais a ceci :
    . dans le .h, avant la déclaration de la TForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class TMyHintWindow : public THintWindow
    {
       private:
     
       protected:
            virtual void __fastcall Paint(void);
            virtual TRect __fastcall CalcHintRect(int MaxWidth, AnsiString AHint, void * AData);
       public:
     
    };
    .dans le .h, dans la déclaration de la TForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private:	// Déclarations de l'utilisateur
            void __fastcall MyOnShowHint(AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo);
    .dans le .cpp:
    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
     
    String g_GlobalHint = "" ;
    //---------------------------------------------------------------------------
    void __fastcall THintWindow::NCPaint(HDC DC)
    {
    //
    }
    //---------------------------------------------------------------------------
    TRect __fastcall TMyHintWindow::CalcHintRect(int MaxWidth, AnsiString AHint, void * AData)
    {
            Canvas->Font->Size = 9;
            Canvas->Font->Color = clBlue;
            Canvas->Font->Name = "Arial";
            Canvas->Font->Style = TFontStyles() << fsBold;
     
            TSize size ;
            GetTextExtentPoint(Canvas->Handle,g_GlobalHint.c_str(),g_GlobalHint.Length(),&size);
     
            TRect rect = THintWindow::CalcHintRect(MaxWidth, AHint, AData);
            rect.Right = 10 + rect.Left + size.cx + 10 ;
            return rect;
    }
    //---------------------------------------------------------------------------
    void __fastcall TMyHintWindow::Paint(void)
    {
    TRect arect = this->GetClientRect();
    HRGN hRegion = CreateRoundRectRgn(arect.left, arect.top, arect.right, arect.bottom, 20, 20);
    SetWindowRgn(this->Handle, hRegion, true);
    HICON aicon = LoadIcon(NULL, IDI_ASTERISK);
            this->Canvas->Brush->Color = clInfoBk;
            this->Canvas->FillRect(arect);
            this->Canvas->Ellipse(arect);
            TRect brect = arect;
            brect.Right -= 3;
            brect.Bottom -= 2;
            RoundRect(this->Canvas->Handle,brect.Left,brect.Top,brect.Right,brect.Bottom,20,20);
     
            this->Canvas->Font->Size = 9;
            this->Canvas->Font->Color = clBlue;
            this->Canvas->Font->Name = "Ms Sans Serif";
            this->Canvas->Font->Style = TFontStyles() << fsBold;
     
            SelectObject(Canvas->Handle, Canvas->Font->Handle);
            SetBkMode(Canvas->Handle, TRANSPARENT);
     
            TRect crect = arect;
            crect.Left += 60;
            crect.Top += 5;
                    DrawIcon( this->Canvas->Handle, 5, 5, aicon );
                    DrawText( this->Canvas->Handle,g_GlobalHint.c_str(),g_GlobalHint.Length(), &crect, DT_LEFT | DT_VCENTER);
    String S = AnsiString("\n");
    S = S + AnsiString("\n");
    S = S + AnsiString(" : Fait\n");
    S = S + AnsiString(" : Fait\n");
            crect.Left += 180;
                    DrawText( this->Canvas->Handle,S.c_str(),S.Length(), &crect, DT_LEFT | DT_VCENTER);
            crect.Top = 5;
            crect.Left = brect.Right - GetSystemMetrics(SM_CXSIZE) - 5;
            crect.Right = crect.Left + GetSystemMetrics(SM_CXSIZE);
            crect.Bottom = crect.Top + GetSystemMetrics(SM_CYSIZE);
                    DrawFrameControl( this->Canvas->Handle, &crect, DFC_CAPTION, DFCS_CAPTIONCLOSE);
    }
    //-------------------------------------------------------------------------
    void __fastcall TForm2::MyOnShowHint(AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo)
    {
    AnsiString csName = HintInfo.HintControl->ClassName() ;
    g_GlobalHint = "" ;
            if (csName == "TMemo") { g_GlobalHint = (String)((TMemo*)HintInfo.HintControl)->Hint ; }
            if (csName == "TLabel") { g_GlobalHint = (String)((TLabel*)HintInfo.HintControl)->Hint ; }
            if (csName == "TCheckBox") { g_GlobalHint = (String)((TCheckBox*)HintInfo.HintControl)->Hint ; }
            if (!g_GlobalHint.IsEmpty())
            {
                    HintInfo.HintWindowClass = __classid( TMyHintWindow );
                    HintInfo.HideTimeout = 10000;
                    CanShow = true;
            }
            else
            {
                    HintInfo.HintWindowClass = __classid( THintWindow );
                    CanShow = true ;
            }
    }
    //----------------------------------------------------------------------
    Et dans le OnCreate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application->OnShowHint = MyOnShowHint ;
    Bon, il me reste encore qq intérrogations au sujet du NCPaint(HDC DC) obligatoire sous peine de plantage, ou du CalcHintRect. De même, on peut a priori définir un évènement OnClick ou OnMouseUp, puisque j'aimerai pouvoir faire quelquechose de similaire a la bulle d'avertissement lors de l'installation des mises a jour windows.
    A voir quoi...

    @ +

  10. #10
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Ben non... elle est plus Résolue...Na !

    Je suis allé un peu vite la, dans mes dernières phrases.
    Cela n'a pas l'air tres évident ce coup de récupérer éventuellement le click sur la THintWindow....
    Une petite idée qui traine ...?

    Merci d'avance,

    @ +

  11. #11
    Membre éprouvé

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Ouais j'ai bien une petite idée...allez voir ma source BCB sur l'utilisation des TrayIcon via l'API Windows. Avec le code de ma source à l'appui ca ne devrait plus être très dur à faire.

    Allez aussi faire un ptit tour sur le lien MSDN fourni dans la description de la source : y a toutes les infos mais pas toujours très faciles à trouver !

    Par ici pour la source ;-)

  12. #12
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Merci beaucoup sir Neilos...après cette trèèèèèèèèès longue journée de travail, j'irais de suite voir vos sources. Je me souvenais bien qu'il y avait quelquechose a ce sujet, mais j'ai pas été foutu de le retrouver par moi même, désolé...

    A plus tard, merci

  13. #13
    Membre éprouvé

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Ouaip moi aussi parfois je cherche pendant des heures, je sais que c'est là qqpart tout prêt mais je trouve pas :S

    Au fait, on peut se tutoyer :-D. Le vous ca fait "vieux"

    Tiens moi au courant !

  14. #14
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Salut,

    J'ai repris ton code Neilos - et voui je préfère le tutoiement moi aussi, apres tout je ne suis pas si vieux, une belle jeune femme m'a récemment donné 6 ans de moins que la réalité ! - mais une petite chose semble me resister...
    En effet, point d'info bulle.

    Dans le OnCreate de la TForm, j'ai honteusement et scrupuleusement recopié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       icone = new Graphics::TIcon();
       NI_Data.cbSize = sizeof( NOTIFYICONDATA );
       NI_Data.hWnd = this->Handle;
       NI_Data.uID = 0;
       NI_Data.hIcon = Application->Icon->Handle;
       NI_Data.uCallbackMessage = AM_CALLBACK_MESSAGE;
       NI_Data.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
       strcpy( NI_Data.szTip, ValHint.c_str() ); //VaHint est un String
       if ( Shell_NotifyIcon( NIM_ADD, &NI_Data ) == 0 )
       {
            //bla, bla...
       }
    puis j'essaie de lancer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String texte = "Ouvrir la fenêtre principale ?";
    String titre = "sAnim :";
            strcpy( NI_Data.szInfo, texte.c_str() );
            strcpy( NI_Data.szInfoTitle, titre.c_str() );
            NI_Data.dwInfoFlags = NIIF_INFO;
            NI_Data.uTimeout = 10000;
            Shell_NotifyIcon( NIM_MODIFY, &NI_Data );
    par exemple, histoire de tester...mais il je n'obtiens pas la bulle espérée...

    C'est quoi ma bêtise ?

    Merci d'avance,
    @ +

  15. #15
    Membre éprouvé

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Euh la à froid je sais pas et je n'ai pas BCB au boulot.

    Mais ce que tu peux vérifier : a tu recopié tout ce dont tu as vraiment besoin.
    Genre la fonction de CALLBACK qui réagit aux messages etc... ?

    Ca marche dans la source donc je pense que tu as oublié de recopier quelquechose.
    Si ce soir tu n'y arrive toujours pas on jettera un coup d'oeil ;-)

  16. #16
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Bon ...et bien comme je le craignais un peu, je n'ai pas de 'ballon'.
    Que nenni rien du tout, pas de 'ballon' qui se crée au moment du lancement de l'appli ou dans un évènement ultérieur.
    Mais c'est vrai que cela marche bien dans ta source...
    @ +

  17. #17
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Bon j'ai cherché un peu partout dans mon code, j'ai pas trouvé pour l'instant...
    Dois bien y avoir une épine quelquepart ... pour que ma bulle refuse de s'afficher.
    Ce que j'arrive pas a comprendre - entre autres, parceque le nombre de choses que je ne comprends pas est absolument faramineux - c'est que la partie reservée a la description de l'info-bulle dans le NOTIFYICONDATA est très très peu documentée, voire pas du tout.
    (mais je peut tres bien passer a côté, certes...)

    Merci d'avance pour toute info...
    @ +

  18. #18
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut les gars,

    Pour ma part, je me suis très largement inspiré de la source donné par Neilos (merci à lui) il y a quelques temps. J'ai deux choses:
    (variables globales)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NOTIFYICONDATA    NI_Data;           //structure of notify icon data (info-bulle)
    au lancement de mon application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //create notyfi icon (message on windows taskbar)
        NI_Data.cbSize = sizeof( NOTIFYICONDATA );
        NI_Data.hWnd = this->Handle;
        NI_Data.uID = 0;
        NI_Data.hIcon = Application->Icon->Handle;
        NI_Data.uCallbackMessage = AM_CALLBACK_MESSAGE;
        NI_Data.uFlags = NIF_ICON | NIF_MESSAGE;
        if ( Shell_NotifyIcon( NIM_ADD, &NI_Data ) == 0 )
        {            
              Application->MessageBox(...); //error
        }
    et lorsque je la lance, j'ai fait une fonction:
    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
     
    void Notify(int KindOfMessage)
    {
    /*
    KindOfMessage
    0       End of loading file
    1       End of filtering data
    2       End of showing data
    */  //if the application is minimized or if the application is not on foreground
        if(Form1->Handle != GetForegroundWindow())
        {
            switch(KindOfMessage)
            {   //load
                case 0: NI_Data.uFlags |= NIF_TIP;
                        strcpy(NI_Data.szInfo,words(145,Language).c_str());
                        strcpy(NI_Data.szInfoTitle,words(144,Language).c_str());
                        break;
                //filter
                case 1: NI_Data.uFlags |= NIF_TIP;
                        strcpy(NI_Data.szInfo,words(147,Language).c_str());
                        strcpy(NI_Data.szInfoTitle,words(146,Language).c_str());
                        break;
                //swhow
                case 2: NI_Data.uFlags |= NIF_TIP;
                        strcpy(NI_Data.szInfo,words(149,Language).c_str());
                        strcpy(NI_Data.szInfoTitle,words(148,Language).c_str());
                        break;
            }
            NI_Data.uTimeout = 0;
            NI_Data.uFlags |= NIF_INFO;
            NI_Data.dwInfoFlags = NIIF_INFO;
            NI_Data.dwState = NIS_HIDDEN;
            NI_Data.uFlags |= NIF_STATE;
            Shell_NotifyIcon( NIM_MODIFY, &NI_Data );
        }
    }
    mon infobulle apparaît uniquement si mon application n'est pas en premier plan, et préviens l'utilisateur avec les chaînes donnés par ma fonction words.

    Chez moi ca fonctionne parfaitement, l'infobulle apparaît et disparaît. Je n'ai pas implémenté l'évènement "OnClick" de la bulle, mais la source donnée le fait parfaitement.
    Si ca peut t'aider...

  19. #19
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Oki merci pour le code bandit boy,

    Dans le fond, je ne vois pas de différence avec ce que je faisais, hormis que tu as une 'fonction spéciale' a part pour l'affichage de l'info-bulle....
    Je vais m'inspirer de cette idée, et tenter de buller...heu...faire appparaitre ma bulle

    Au fait, sans indiscrétion mal placée et juste pour éclairer ma petite lanterne, a quel moment du lancement de ton appli appelles tu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void Notify(int KindOfMessage)
    Merci, @ +

  20. #20
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Merci donc a Neilos et bandit boy....terrible erreur d'inattention:
    j'ai omis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NI_Data.uFlags |= NIF_INFO;

    ...L'est pas un peu con le gars la ? (c'est ce qu'on a le droit de se dire, la, effectivement)

    @ +

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Info bulle dans la barre de notification
    Par elmak'os dans le forum Débuter
    Réponses: 2
    Dernier message: 05/01/2012, 12h33
  2. faire des info-bulle
    Par pafi76 dans le forum Access
    Réponses: 3
    Dernier message: 30/06/2006, 11h34
  3. Réponses: 2
    Dernier message: 20/02/2006, 16h06
  4. Créer des "infos bulles"
    Par Nanoulov dans le forum SWT/JFace
    Réponses: 6
    Dernier message: 08/07/2005, 15h02
  5. Réponses: 3
    Dernier message: 11/03/2004, 16h11

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