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 :

Probleme avec ClistCtrl


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut Probleme avec ClistCtrl
    Bonjour,

    Je suis en train de développer une application win32 avec les MFC en utilisant VS 2008 SP1.

    J'ai sur mon application, une liste de type CListCtrl. Cette liste contient plusieurs colonnes.

    J'ai l'impression qu'il y a une limite du nombre de caracteres à afficher dans une colonnes. et moi je veux aller jusqu'à 5000 caracteres à peu pres.

    En même temps, j'ai programmé la CListCtrl pour qu'elle m'affiche les InfoTip quand le curseur de la souris est sur la colonne d'un element et que le contenu de cette colonne ne s'affiche pas dans sa totalité. et je veux que soit le contenu de lIinfoTip defile soit l'infotip est sur plusieurs lignes.

    Quelqu'un pourra m'aider à regler ces deux probleme ?

    Merci d'avance

  2. #2
    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 ksoft Voir le message
    J'ai l'impression qu'il y a une limite du nombre de caracteres à afficher dans une colonnes. et moi je veux aller jusqu'à 5000 caracteres à peu pres.
    Non, il n'y a pas de limite (ou alors, elle est nettement plus loin).

    Par contre, il y a une limite dans le nombre de caractères stockés par le CListCtrl (de tête, je dirai aux environs de 250 mais ce n'est peut être pas la même valeur pour toutes les machines/version/application).

    Habituellement, lorsqu'on insère une ligne ou une colonne, on donne la chaine à afficher et elle est stockée par l'objet CListCtrl.

    Tu peux aussi ne pas la donner lors de l'insertion (en fait, tu donnes LPSTR_TEXTCALLBACK comme chaine de caractères) mais c'est à toi de gérer un autre message Windows. Lorsque le CListCtrl à besoin de la chaine pour l'afficher, il la demande à l'application.

    Il faut surcharger la fonction OnGetDispInfo, quelquechose de ce genre :
    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
     
     
    BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
    	//{{AFX_MSG_MAP(CMyListCtrl)
    	ON_NOTIFY_REFLECT(LVN_GETDISPINFO, OnGetDispInfo)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
     
    ...
     
    void CMyListCtrl::OnGetDispInfo(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
     
    	if (pDispInfo->item.mask & LVIF_TEXT)
    	{
    		ItemStruct* pAppItem = (ItemStruct*) pDispInfo->item.lParam;
    		// attention le pointeur pDispInfo->item.pszText doit continuer à être valide même à la fin de la fonction
    		pDispInfo->item.pszText = "Texte à afficher";
    	}	
    	*pResult = 0;
    }
    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
    .

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    J'ai essayé votre solution mais ca me tronque toujours la chaine de caractere que je veux afficher.

    Je ne sais pas comment faire ?

  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
    On peut voir le code des InserItem() et la fonction OnGetDispInfo() ?
    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
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    Voila le code de l'insertitem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
             LVITEM          _ItemFileListCtrl;
     
    	_ItemFileListCtrl.mask  = LVIF_TEXT ;
    	_ItemFileListCtrl.iItem  = g_FileListCtrl->GetItemCount();
     
    	/* Ajout du chemin complet du fichier avec le nom*/
    	g_TexteAAfficher =  pElement->wcFullPath;
    	_ItemFileListCtrl.iSubItem = 0;
    	_ItemFileListCtrl.pszText = LPSTR_TEXTCALLBACK;
    	g_FileListCtrl->InsertItem(&_ItemFileListCtrl);



    Voila le code de la fonction OnGetDispInfo :
    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
     
    void CTestApplication::OnGetDispInfo(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    	TCHAR	_Text[2048]	=	L"";
     
    	if (pDispInfo->item.mask & LVIF_TEXT)
    	{
    		ItemStruct* pAppItem = (ItemStruct*) pDispInfo->item.lParam;
    		/* attention le pointeur pDispInfo->item.pszText doit 
    		   continuer à être valide même à la fin de la fonction */
    		wcscpy_s(_Text, 2048, g_TexteAAfficher);
    		pDispInfo->item.cchTextMax	=	2048;
    		pDispInfo->item.pszText = _Text;
    	}	
    	*pResult = 0;
    }

  6. #6
    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
    Attention, ton pointeur pDispInfo->item.pszText n'est plus valide à la sortie de la fonction puisqu'il vaut _Text qui est une variable locale de la fonction.

    Autre chose, quand tu dis qu'il tronque, c'est combien de caractères qui sont affichés sur combien que tu voudrais afficher ?
    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. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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