2008-10-10 9 views
2

J'utilise un contrôle CListCtrl pour afficher des informations dans mon application MFC. Pour le moment j'ai LVS_EX_CHECKBOXES dans SetExtendedStyle ainsi toutes les lignes dans le contrôle ont une case à cocher à côté d'eux. Ce que je voudrais cependant, c'est que seulement certaines des lignes du contrôle ont des cases à cocher. Est-ce possible ? Si c'est comment ça se fait?J'ai besoin de certaines lignes d'un contrôle CListCtrl pour avoir des cases à cocher

Merci

Ian

Répondre

6

Pour chaque élément qui ne devrait pas avoir une case à cocher:

LVITEM lvi; 
lvi.stateMask = LVIS_STATEIMAGEMASK; 
lvi.state = INDEXTOSTATEIMAGEMASK(0); 
::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)&lvi); 

Pour « créer » la case à cocher pour un élément:

SetCheck(Item, true/false); 
+2

Q rapide - en cliquant sur l'espace où la case serait fait apparaître un, est-ce moi, ou une fonctionnalité de ClistCtrl? – gbjbaanb

+0

@Serge: Toute réponse pour gbjbannb? – Jeeva

+0

@Jeeva: Dunno :-( –

0

Oui il est. Ce que vous devez faire est de créer des bitmaps des cases à cocher et inclus ceux dans le rappel. Une de vos cartes binaires serait vide.

Alternativement, vous pouvez faire un dessin propriétaire et appeler la fonction DrawFrameControl.

Vous pouvez également ajouter du code pour tester les clics de souris et répondre en conséquence.

Questions connexes