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

MFC Discussion :

Tooltip qui disparait et mis en forme


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Tooltip qui disparait et mis en forme
    Dans la rubrique "Comment gérer un Tooltip (bulle) sur un contrôle CStatic ou un CEdit ?" de la FAQ VC++,
    j'utilise la deuxième solution pour gérer mes Tooltip. J'ai cependant deux questions.
    1.Lorsque je vais sur un contrôle CEdit, je vois effectivement le tooltip apparaitre avec le texte que je lui est affecté.
    Pourquoi, après avoir cliqué dans mon contrôle CEdit, le tooltip devient inactif?
    (Je ne parle pas du fait qu'il disparaisse pour que l'on puisse modifier la valeur du contrôle,
    mais lorsque je reviens sur mon contrôle le tooltip n'apparait plus jamais!)
    2.Peut on faire des sauts de ligne dans un toooltip?

    Merci d'avance pour vos réponses.

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Pour la première question je ne sais pas trop te répondre mais pour la 2ième cela peut se faire avec wsprintf

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    il semblerait que dans le cas d'un Edit ce soit la prise de focus qui empeche le
    le tooltip de reapparaitre .
    (apres changement de focus sur un autre controle et retour sur l'edit).
    apres quelques essais je propose ceci:
    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
     
    // CTplToolTip window
    template <class GENERIC_TOOLTIP>
    class CTplToolTip : public GENERIC_TOOLTIP
    {
        // Construction
    public:
        CTplToolTip(){}
     
    // Attributes
     
    public:
     
    CToolTipCtrl m_tooltip;
    CString      m_strText;
    UINT         m_nIDTool;
     
    // Operations
    public:
     
        BOOL AddTool(LPCTSTR lpszText=LPSTR_TEXTCALLBACK,
                    LPCRECT lpRectTool=NULL,UINT nIDTool=0)
        {
            m_strText=lpszText;
            m_nIDTool=nIDTool;        
            return m_tooltip.AddTool(this,lpszText,lpRectTool ,nIDTool );
        }
    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CTplToolTip)
    public:
        virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam)
        {
            if(nMsg==WM_MOUSEACTIVATE && m_tooltip.m_hWnd != NULL)
            {
                m_tooltip.DelTool(this,m_nIDTool);
                m_tooltip.AddTool(this,m_strText,NULL,m_nIDTool);
     
            }
            return GENERIC_TOOLTIP::DefWindowProc( nMsg, wParam,lParam);
        }
        virtual BOOL PreTranslateMessage(MSG* pMsg)
        {
            if (m_tooltip.m_hWnd != NULL)
            {
                // translate the message based on TTM_WINDOWFROMPOINT
                MSG msg = *pMsg;            
                msg.hwnd = (HWND)m_tooltip.SendMessage(TTM_WINDOWFROMPOINT,
                                                    0, (LPARAM)&msg.pt);
                CPoint pt = pMsg->pt;
                if (msg.message >= WM_MOUSEFIRST && msg.message <= WM_MOUSELAST)
                ::ScreenToClient(msg.hwnd, &pt);
     
                msg.lParam = MAKELONG(pt.x, pt.y);
                // Let the ToolTip process this message.
                m_tooltip.RelayEvent(&msg);
        }
        return GENERIC_TOOLTIP::PreTranslateMessage(pMsg);
    }
     
    protected:
    virtual void PreSubclassWindow()
    {
        GENERIC_TOOLTIP::PreSubclassWindow();
     
        m_tooltip.Create(this); // la view ou la dialog   
        m_tooltip.SetDelayTime(1000); // le delay
        m_tooltip.Activate(TRUE); 
        m_tooltip.SetMaxTipWidth(500); // pour le multiligne.
    }
    pour le multiligne SetMaxTipWidth (voir code maj) devrait resoudre le pb .
    essaye et tiens moi au courant.
    va falloir que j'update le post dans la faq 8)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Et bien merci, à présent tout roule.

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    et bien pense a mettre resolu sur ton post

  6. #6
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut [MFC]comment associer une classe dérivé de CEdit avec templa
    bonjour,
    j'ai une classe dérivé de CEdit soit CMapersoCedit et je voudrais utiliser ce principe de tooltip mais si je transforme le template CTplToolTip <Cedit> m_edit en CTplToolTip <CMapersoCedit > m_edit soit dans la déclaration de mes variable de ma formview j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public :
       //{{AFX_DATA(CMaClasseView)
      enum { IDD = ...
      ...
      CTplToolTip <CMapersoCedit> m_edit ; // ma variable
      ...
      //}}ARX_DATA
    ...
    j'ai une erreur à la compilation sur l'utilisation des fonctions de CMapersoCedit .

    je pense etre dans l'erreur pour associer ma classe perso dérivé de CEdit avec les tooltips...

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    j'ai pas tout compris lol,;
    mais regarde la faq pour les tooltips , le sujet y est traité suite a ce post..

  8. #8
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut
    salut farscape,
    j'ai bien consulté la FAQ... mais
    ouhais, le code que j'ai mis est celui ou se trouve les déclaration de mes variables, de ma FormView, que j'avais faites avec le classwizard, en fait j'ai essayé de remplacer la déclaration :

    CMapersoCedit m_edit ;

    par

    CTplToolTip <CMapersoCedit> m_edit ; // ma variable

    et c'est là que ça pêche ! car les fonctions de CMapersoCedit ne sont plus accséssibles.

    Donc comment faire pour travailler avec une classe dérivée de CEdit et non avec CEdit directement et comment déclarer les variables ?

    Merci

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    et c'est là que ça pêche ! car les fonctions de CMapersoCedit ne sont plus accséssibles.
    pourquoi ? je comprends pas

  10. #10
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut
    j'avais d'abord crée un fichier pour la classe CTplToolTip avec les include et tout mais maintenant (aprés avoir enlevé les include) je l'ai inséré dans le fichier de ma classe CMapersoCedit, la classe CTplToolTip apparait bien dans le classview .
    Mais erreur à la compil :
    impossible de trouver le fichier TplToolTip.cpp qui n'existe plus et toujours problème de compil. la ou se trouvent des appels du genre m_edit.GetFonctionPerso();
    ou m_edit = string_variable (j'avais surchargé le =) qui fonctionnaient auparavant.

    merci, j'espère que tu auras compris, pas toujours facile d'expliquer...
    déja que je suis dans le flou !

  11. #11
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut
    En fait si t'avais un petit exemple d'intégration dans d'une CFormView d'une classe dérivée de CEdit et utilisation du système evolué du tooltip
    ça serait génial pour moi et d'autres je suppose...

    merci

  12. #12
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323

  13. #13
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut
    OK, ça fonctionne bien grace à ton exemple sauf la fonction operator = que j'avais surchargé dans mon Edit perso (CMapersoCedit) comme ceci :

    CMapersoCedit & CMapersoCedit:operator = (const CString & str)
    {
    ...
    }

    qui me permetait d'affecter directement une CString à mon edit.
    Cela fonctionnait super bien...

    les autres fonctions fonctionnent bien...

    Encore Merci pour ton aide farscape.
    C'est souvent ...

  14. #14
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut
    cela fonctionne niquel mais comme mentionné dans le forum ou t'avais déja donné une autre solution (http://www.developpez.net/forums/vie...oltip&start=30), j'ai intégré le tout à l'intérieur de ma classe Edit perso et maintenant j'ai bien ma surcharge de fonction operator = qui fonctionne par contre je saut de ligne \n ne fonctionne plus , j'ai à la visu un petit rectangle à la place et tout sur la même ligne

    si ta la solution ?????

    Merci

  15. #15
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut
    autant pour moi

    j'avais oublié :

    m_tooltip.SetMaxTipWidth(500); // pour le multiligne

    dans le PreSubclassWindow()

    Merci farscape, tout nous fait avancer à grand pas

  16. #16
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    oui mais tu es partis de vieux posts alors que dans la faq c'etait à jour lol:
    http://c.developpez.com/faq/vc/?page...rs#MakeToolTip

    le template ne devrait pas causer de probleme pour l'operateur d'affectation.

  17. #17
    Membre régulier

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2002
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 216
    Points : 120
    Points
    120
    Par défaut
    Ouhais, tu as raison ta version de la FAQ fonctionne bien, mais grace à ton exemple joint auparavant c'était OK : des truc m'avait échapé

    mais la version, avec intégration dans une classe dérivé du CEdit fonctionne aussi (d'ailleur, si on creuse c'est similaire à la FAQ amis adapté...)

    ENcore et toujours merci

    L'exemple que tu m'as fournis serais bien si le lien était inséré dans la FAQ

  18. #18
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par lucky
    L'exemple que tu m'as fournis serais bien si le lien était inséré dans la FAQ
    ça sera fait lors de la prochaine MAJ

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

Discussions similaires

  1. Balise form qui disparait
    Par lb3869 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 17/07/2014, 08h14
  2. Réponses: 0
    Dernier message: 29/06/2011, 18h50
  3. Réponses: 5
    Dernier message: 06/03/2008, 10h47
  4. modifier dynamiquement un JCombo + tooltip mis en forme
    Par tommy :-) dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 25/03/2006, 15h36
  5. Stocker du texte mis en forme dans un document XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/02/2003, 10h23

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