2010-08-11 20 views
3

J'essaye de placer le style LVS_EX_FULLROWSELECT sur mon contrôle de liste de grille comme je veux la pleine sélection de rangée. Cependant, apparemment, cela n'a aucun effet. Comme j'utilise un certain nombre d'autres styles, je me demande si LVS_EX_FULLROWSELECT a des problèmes de compatibilité avec d'autres styles. N'importe qui? Voici les styles que je définis.Est-ce que LVS_EX_FULLROWSELECT a des problèmes de compatibilité avec d'autres styles?

Dans un premier temps les styles suivants sont de la classe de contrôle de la liste de base:

WS_CHILD|WS_BORDER|LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SINGLESEL 

Ensuite, j'essaie de définir des styles supplémentaires dans la classe de contrôle de la liste de la grille dérivée:

ListView_SetExtendedListViewStyleEx(sysId(), 0, LVS_EX_GRIDLINES | LVS_OWNERDATA | LVS_EX_FULLROWSELECT); 

Répondre

2

Vous devez envoyer le LVM_ SETEXTENDEDLISTVIEWSTYLE message au contrôle et spécifiez le style étendu LVS_EX_FULLROWSELECT (source: MS Support).

Edit:

Vérifiez l'exemple. Il y a

ListView_SetExtendedListViewStyle(m_hWnd, ListView_GetExtendedListViewStyle(m_hWnd), VS_EX_FULLROWSELECT); 

Essayez d'utiliser ListView_GetExtendedListViewStyle(sysId()) au lieu de 0. BTW - est-ce sysId() de la vôtre vraiment récupérer la poignée de la fenêtre? Le nom semble quelque peu différent.

Cheers.

+0

Merci, mais c'est ce que je fais. La macro ListView_SetExtendedListViewStyleEx appelle le LVM_SETEXTENDEDLISTVIEWSTYLE derrière la scène. Et j'ai déjà LVS_EX_FULLROWSELECT dans l'appel. Mais ça ne marche pas, c'est pourquoi j'ai pensé que le style LVS_EX_FULLROWSELECT peut avoir des problèmes de compatibilité avec d'autres styles que j'utilise. –

+0

J'ai édité ma réponse pour vous donner un indice plus détaillé. J'espère que cela aide. –

+0

Cela ne fonctionne toujours pas. Il semble que LVM_SETEXTENDEDLISTVIEWSTYLE soit en conflit avec certains des autres styles que je définis. Oui sysId() récupère le handle de la fenêtre. Merci quand même. –

4

Le second paramètre est un masque, vous devez donc:

ListView_SetExtendedListViewStyleEx(m_hWnd, LVS_EX_GRIDLINES | LVS_OWNERDATA | LVS_EX_FULLROWSELECT, LVS_EX_GRIDLINES | LVS_OWNERDATA | LVS_EX_FULLROWSELECT); 
+0

Merci. J'ai essayé mais ça n'a pas marché. En passant, il n'y a pas de 0 dans le second paramètre signifie tout correspondre. Au moins c'est ce que dit la documentation. –