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 :

[MFC] tooltip sur bouton indépendant d'un dialogue


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut [MFC] tooltip sur bouton indépendant d'un dialogue
    Bonjour,

    J'ai lu l'article FAQ suivant : http://c.developpez.com/faq/vc/?page...rs#MakeToolTip et implémenté l'affichage de tooltips sur les CEdits de CDialogs avec la première méthode.

    Maintenant j'aimerais afficher un tooltip directement sur un objet de ma classe CObjectGUI dérivée de la classe CButton, qui n'est pas à l'intérieur d'un CDialog, donc implémenter cela dans cette classe dérivée de CButton et non pas dans un CDialog qui la contiendrait. Peut-on faire cela d'une manière aussi simple que celle de la FAQ ?

  2. #2
    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
    pourquoi ne pas utiliser dans ce cas la deuxieme methode ?

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    j'ai essayé : cette méthode donne un assertion failed sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	ASSERT(::IsWindow(m_hWnd));
    normal puisque la classe CObjectGUI dérivée de CBitmapButton à partir de laquelle je l'appelle a un hWnd NULL, comment résoudre cela ?

    PS : j'ai déclaré le template comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	CTplToolTip<CButton> m_ToolTip;

  4. #4
    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,
    tu as un hWnd null parce que ton controle n'est pas initialisé graphiquement .
    je ne sais pas comment tu compte utiliser ce controle.



  5. #5
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    je fais le m_ToolTip.AddTool(name); qui provoque l'assertion failed juste apres avoir fait un ptr = new CObjectGUI, le create sur ce nv CObjectGUI et un loadBitmap.
    Il est deja affiché lorsque l'assertion failed se produit

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    (c'est un CBitmapButton qui s'affiche directement dans la view)

  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
    un controle dynamique doit etre initialisé avec la fonction Create correspondant a sa classe .
    voir MSDN.


  8. #8
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	Create(NULL, WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(coord.x,coord.y,width+coord.x,height+coord.y), pDC->GetWindow(), 1);

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    Ce Create de la classe CButton fait sur mon CObjectGUI dérivé de CBitmapButton dérivé de CButton ne crée t-il pas un CWnd associé ? Ou alors il faut faire autre chose ?

  10. #10
    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
    il faut me monter un bout de code coherent ,la tu morcelles a l'extreme ...
    ce create il se fait sur quoi ?,en l'etat je ne peux pas repondre .


  11. #11
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    oulala c'est qu'il y en a un peu dans toutes les classes... Je te prépare ça

  12. #12
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Points : 58
    Points
    58
    Par défaut
    tout commence par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	CStockGUI* stockGUI = new CStockGUI();
    CStockGUI dérive de CObjectGUI

    Puis, dans une autre classe, j'appelle la fonction suivante sur l'objet ci dessus (qui dans quickwatch a bien les valeurs des variables que je lui ai donné, etc. mais hWnd=???) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    BOOL CObjectGUI::DrawObjectGUI(CDC* pDC, BOOL sel)
    {
    	Create(NULL, WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(coord.x,coord.y,width+coord.x,height+coord.y), pDC->GetWindow(), 1);
     
            LoadBitmaps(img);
     
    	m_ToolTip.AddTool(name);
     
    	return TRUE;
    }

Discussions similaires

  1. [MFC] Hyperlink sur un bouton
    Par Platypus dans le forum MFC
    Réponses: 2
    Dernier message: 15/12/2006, 16h26
  2. [MFC] Pb sur un bouton
    Par spirit_1999 dans le forum MFC
    Réponses: 13
    Dernier message: 15/06/2005, 13h38
  3. [MFC] image sur un bouton
    Par mfrai02 dans le forum MFC
    Réponses: 6
    Dernier message: 24/05/2005, 14h42
  4. Réponses: 9
    Dernier message: 23/02/2004, 19h14
  5. [MFC] Boucle sur un bouton
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h37

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