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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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 : 54
    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
    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 éprouvé

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

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    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 éprouvé
    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 : 54
    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
    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 éprouvé
    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 : 54
    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
    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 éprouvé

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

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    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 expérimenté

    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
    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 éprouvé
    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 : 54
    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
    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...

    @ +

  8. #8
    Membre éprouvé
    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 : 54
    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
    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,

    @ +

  9. #9
    Membre éprouvé

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    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 ;-)

  10. #10
    Membre éprouvé
    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 : 54
    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
    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

  11. #11
    Membre éprouvé

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    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 !

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

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