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 :

Afficher un texte dans une CTreeView


Sujet :

MFC

  1. #1
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut Afficher un texte dans une CTreeView
    Bonjour,

    J'ai une fenêtre CTreeView dans laquelle je cherche à afficher le texte "L'arbre est vide" au milieu de la fenêtre lorsque l'arbre du CtreeView est vide.

    Après moult recherches, je n'ai pas trouvé comment faire (la fonction OnDraw() n'étant évidemment pas appelée, sinon c'est trop facile ).

    Si vous avez une idée, je suis preneur.

    Merci de votre aide.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  2. #2
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Pour un CTriewView je ne saurai exactement te dire, par contre concernant un CTreeCtrl il faut regarder du côté de OnNMCustomdraw. Tu devrais peut-être pouvoir trouver un lien entre les 2.

    Par contre je te préviens, c'est vraiment le genre de control à pleurer ... bon courage

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    Pour un CTriewView je ne saurai exactement te dire, par contre concernant un CTreeCtrl il faut regarder du côté de OnNMCustomdraw.
    je ne pense pas que cela soit la bonne méthode;
    OnNMCustomdraw() permet de dessiner sur les branches de l'arbre pas au milieu
    Ceci dit je vais vérifier...


    Citation Envoyé par ram-0000 Voir le message
    Bonjour,

    J'ai une fenêtre CTreeView dans laquelle je cherche à afficher le texte "L'arbre est vide" au milieu de la fenêtre lorsque l'arbre du CtreeView est vide.
    CTreeView hérite de CWnd donc tu dois pouvoir obtenir le CDC.
    Si tu veux afficher du texte et forcer l'affichage il suffit d'appeler MonTreeView.Invalidate().


    Citation Envoyé par ram-0000 Voir le message
    Après moult recherches, je n'ai pas trouvé comment faire (la fonction OnDraw() n'étant évidemment pas appelée, sinon c'est trop facile ).
    re :CTreeView hérite de CWnd donc il suffit de redéfinir OnDraw()
    Je n'ai pas Visual C++ sous la main je vais regarder..


    si cela n'est pas possible reste la solution du "subclassing" et capter l'événement WM_PAINT

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    re :CTreeView hérite de CWnd donc il suffit de redéfinir OnDraw()
    Je confirme, OnDraw() n'est pas appelée quand l'arbe est vide (dommage)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    ... un CTreeCtrl il faut regarder du côté de OnNMCustomdraw.
    OnNMCustomdraw est une bonne réponse (enfin répond à mon problème).
    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
    void CMibBrowserLeftTree::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	//INFO1(L"CMibBrowserLeftTree::OnNMCustomdraw()");
    	NMTVCUSTOMDRAW *pcd = (NMTVCUSTOMDRAW   *)pNMHDR;
    	switch(pcd->nmcd.dwDrawStage)
    	{
    		case CDDS_PREPAINT: 
    			*pResult = CDRF_NOTIFYITEMDRAW;
    			if(GetTreeCtrl().GetCount() == 0)
    			{
    				//INFO1(L"No item to display");
    				_no_item(pcd->nmcd.hdc);
    			}
    			break;
    
    		case CDDS_ITEMPREPAINT : 
    		{
    			HTREEITEM hItem = (HTREEITEM)pcd->nmcd.dwItemSpec;
    
    			UINT flag = GetTreeCtrl().GetItemState(hItem, TVIS_SELECTED);
    			if( (flag & TVIS_SELECTED) == TVIS_SELECTED)
    			{
    				pcd->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT);    
    				pcd->clrTextBk = GetSysColor(COLOR_HIGHLIGHT);
    			}
    
    			*pResult = CDRF_DODEFAULT;// do not set *pResult = CDRF_SKIPDEFAULT
    			break;
    		}
    	}
    }
    La fonction _no_item() reçoit un HDC en paramètre et peut s'amuser à écrire dans toute la zone client de CTreeView
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/05/2009, 00h54
  2. Afficher du texte dans une fenêtre
    Par new_matlab dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 27/04/2009, 17h31
  3. afficher du texte dans une nouvelle fenetre ?
    Par italiasky dans le forum MFC
    Réponses: 7
    Dernier message: 25/11/2008, 15h52
  4. Réponses: 6
    Dernier message: 14/06/2007, 12h13
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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