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 :

Problème avec ToolTips


Sujet :

Windows

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut Problème avec ToolTips
    Bonjour,
    Je voufrais associer un ToolTip aux boutons d' une TOOLBAR ...
    J'ai bien regardé l'explication donné par MSDN, je ne vois pas comment isoler un des boutons dans la TOOLBAR
    Dans le cas de la procedure decrite dans MSDN, mon message se declanche n'importe où sur la Tollbar
    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
    void CreateTooltip (HWND hwnd, char *lptstr)
    {
    
    INITCOMMONCONTROLSEX iccex; 
    HWND hwndTT;               
    TOOLINFO ti;
    unsigned int uid = 0;
    char tmp[5];       
    static RECT rect;
                
    
        iccex.dwICC = ICC_WIN95_CLASSES;
        iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
        InitCommonControlsEx(&iccex);
    
        hwndTT = CreateWindowEx(WS_EX_TOPMOST,
            TOOLTIPS_CLASS,
            NULL,
            WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,		
            CW_USEDEFAULT, CW_USEDEFAULT,
            CW_USEDEFAULT, CW_USEDEFAULT,
            hwnd, NULL, hInst, NULL);
    
        SetWindowPos(hwndTT, HWND_TOPMOST, 0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
    
        GetClientRect (hwnd, &rect);
    
        ti.cbSize = sizeof(TOOLINFO);
        ti.uFlags = TTF_SUBCLASS;
        ti.hwnd = hwnd;
        ti.hinst = hInst;
        ti.uId = uid;
        ti.lpszText = lptstr;
    //
        ti.rect.left = rect.left;    
        ti.rect.top = rect.top;
        ti.rect.right = rect.right;
        ti.rect.bottom = rect.bottom;
    
        SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM)(LPTOOLINFO) &ti);	
    
    }
    Si quelqu'un a déjà fait ...
    Merci d'avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    J'ai même tenté de mettre "LPSTR_TEXTCALLBACK" dans le champs lpszText de la structure TOOLINFO
    Mais je ne recois pas non plus le message de notification "TTN_GETDISPINFO"

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Regarde ici, j'ai eu un peu les mêmes problèmes

    En particulier, ceci peut t'aider :
    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
    // Obtention du handle de la fenêtre du Tooltip associé à la Toolbar
    HWND tool_Hwnd = (HWND)::SendMessage(m_hWnd, TB_GETTOOLTIPS, 0, 0);
    
    if (tool_Hwnd != NULL)
    {		
    	TOOLINFO ti;
    
    	// Pour utiliser la structure TOOLINFO, il faut indiquer la taille de la structure,
    	ZeroMemory(&ti, sizeof(ti));
    	ti.cbSize= sizeof(ti);
    
    	// l'ID du bouton associé
    	ti.uId = (UINT_PTR)ID_BUTTON1;
    
    	// et le handle de la fenêtre mère
    	ti.hwnd = m_hWnd;
    	if (::SendMessage(tool_Hwnd, TTM_GETTOOLINFO ,   0,  (LPARAM) (LPTOOLINFO) &ti) == TRUE)
    	{
    		// il suffit juste d'indiquer ici l'information impérissable que vous voulez transmettre.
    		ti.lpszText = _T("Toto Lariflette");
    		::SendMessage(tool_Hwnd, TTM_SETTOOLINFO ,   0,  (LPARAM) (LPTOOLINFO) &ti);
    	}
    
            // autre méthode possible
    	ti.uId = (UINT_PTR)ID_BUTTON2;
    	if (::SendMessage(tool_Hwnd, TTM_GETTOOLINFO ,   0,  (LPARAM) (LPTOOLINFO) &ti) == TRUE)
    	{
    		// On indique ici l'ID du message dans les ressources
    		ti.lpszText = (LPSTR) IDS_STRING1;
                    // et le handle des ressources.
                    ti.hinst = _Module.GetResourceInstance();
    		::SendMessage(tool_Hwnd, TTM_SETTOOLINFO ,   0,  (LPARAM) (LPTOOLINFO) &ti);
    	}
    
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Oui ça peut effectivement m'aider,
    Mais comment geres tu la strcture RECT de TOOLINFO qui determine les coordonées où le tooltip doit apparaitre ?

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je ne la gère pas, c'est fait automatiquement par la toolbar, moi je n'ai pas créé le tooltip, c'est la toolbar qui l'a créé.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Trap D
    Je ne la gère pas, c'est fait automatiquement par la toolbar, moi je n'ai pas créé le tooltip, c'est la toolbar qui l'a créé.
    Bon alors, j'ai un petit problème ...
    Je n'ai pas de reponse au message TTM_GETTOOLINFO !
    Dans la creation de la ToolBar j'ai ajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        LoadString (hInst, IDS_OUVRIR,  ToolTipsTable[0], sizeof(ToolTipsTable[0]));
        LoadString (hInst, IDS_NEW,     ToolTipsTable[1], sizeof(ToolTipsTable[1]));
        LoadString (hInst, IDS_COUR,    ToolTipsTable[2], sizeof(ToolTipsTable[2]));
        LoadString (hInst, IDS_ATT,     ToolTipsTable[3], sizeof(ToolTipsTable[3]));
        LoadString (hInst, IDS_HIS,     ToolTipsTable[4], sizeof(ToolTipsTable[4]));
        LoadString (hInst, IDS_PREL,    ToolTipsTable[5], sizeof(ToolTipsTable[5]));
        LoadString (hInst, IDS_CHERCHE, ToolTipsTable[6], sizeof(ToolTipsTable[6]));
        LoadString (hInst, IDS_SIMUL,   ToolTipsTable[7], sizeof(ToolTipsTable[7]));
        LoadString (hInst, IDS_PRINT,   ToolTipsTable[8], sizeof(ToolTipsTable[8]));
    
    	SendMessage (hToolbar, TB_SETTOOLTIPS, (WPARAM)(9), (LPARAM)ToolTipsTable);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //Barre d'Outils
                hToolbar = CreateToolBar(hwnd);
    //ToolTips
                hTooltip=SendMessage(hToolbar, TB_GETTOOLTIPS, 0, 0);
    	    if (hTooltip != NULL) {
                  MessageBox(hwnd, "ToolTip existe ...", szAppName, MB_OK|MB_ICONINFORMATION);
    			  memset (&ti, 0, sizeof(ti));
                  ti.cbSize= sizeof(ti);
                  ti.uId = 0;
                  ti.hwnd = hToolbar;
                  if (SendMessage(hTooltip, TTM_GETTOOLINFO, 0, (LPARAM)(LPTOOLINFO)&ti) == TRUE)
                    MessageBox(hwnd, "Structure trouvée ...", szAppName, MB_OK|MB_ICONINFORMATION);
    	   }

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Comme je te le disais, je n'ai jamais créé moi-même le tooltip, c'est la toolbar qui l'a créé automatiquement, donc je ne fais a aucun moment de TB_SETTOOLTIPS.

    J'ai repris un code trouvé sur Internet, qui fonctionne correctement, je l'ai simplement modifié à ma convenance.

    Les problèmes sont venus quand j'ai voulu mettre le manifest XP.

    Désolé de ne pas pouvoir plus t'aider.

    J'ai regardé ton code, et si je me souviens bien, celà ne marchait pas (TB_SETTOOLTIPS) j'ai donc aussi pas mal m***dé avant de trouver la solution que j'ai adoptée.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Trap D
    Comme je te le disais, je n'ai jamais créé moi-même le tooltip, c'est la toolbar qui l'a créé automatiquement, donc je ne fais a aucun moment de TB_SETTOOLTIPS.

    J'ai repris un code trouvé sur Internet, qui fonctionne correctement, je l'ai simplement modifié à ma convenance.

    Les problèmes sont venus quand j'ai voulu mettre le manifest XP.

    Désolé de ne pas pouvoir plus t'aider.

    J'ai regardé ton code, et si je me souviens bien, celà ne marchait pas (TB_SETTOOLTIPS) j'ai donc aussi pas mal m***dé avant de trouver la solution que j'ai adoptée.
    Pourrais tu me faire voir ton code de creation de ta ToolBar ?
    Je pense qu'on doit faire differement ou avec des attributs differents ...

    Merci.

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je vais faire une version light du code que j'ai utilisé et je le mettrais en pièce jointe. Attends un petit peu.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Voilà, tu peux consulter le projet

    Je suis en train de penser que tu as peut-être oublié de mettre TBSTYLE_TOOLTIPS dans le style de création de la Toolbar.
    Fichiers attachés Fichiers attachés
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Trap D
    Voilà, tu peux consulter le projet
    OK, merci.
    Je te tiendrais au courrant ...

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    525
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 525
    Points : 212
    Points
    212
    Par défaut
    Alors, j'ai abandonné le "TB_SETTOOLTIPS" que je n'arrive pas à faire fonctionner. (J'y reviendrais sûrement plus tard ... )
    Voici en PJ, la solution que j'ai adopté ...
    Pas trop vilain, et ça marche !
    @+
    Fichiers attachés Fichiers attachés

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Accès à TB_GETTOOLTIPS
    Bonjour,

    j'ai eu le même problème que celui évoqué dans la discution.
    Et je pense (après avoir résolu mon problème ainsi) que pour pouvoir utiliser TB_SETTOOLTIPS, il faut avoir déclaré dans le style de la toolbar TBSTYLE_TOOLTIPS.

    Merci pour le code de MotlerFool pour m'avoir aidé à résoudre mon problème

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

Discussions similaires

  1. Problème avec ToolTip
    Par sky88 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 31/12/2009, 01h55
  2. [ToolTip] Problème avec le caractère "\n"
    Par thomas_strass dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 30/09/2004, 09h19
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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