Bonjour,
J'ai sous-classé (ou bien sur-classé ?) un controle 'listview' :
1 2 3 4 5 6
| WNDPROC ancienne_listview_proc;
(...)
ancienne_listview_proc = (WNDPROC)SetWindowLong(m_liste,
GWL_WNDPROC, (DWORD) listview_proc); |
Le but etait de pouvoir intercepter les evenements souris et claviers au dessus de la listview, notament déplacer un item de la liste vers une autre position dans la liste.
Ce que j'ai fonctionne mais il reste un petit detail auquel j'aimerai répondre :
J'aimerai que lorsqu'on clique sur un item il se sélectionne (highlight), et que lorsque je le drag vers une autre position ce soit l'item visé qui soit alors sélectionné.
Je n'arrive pas a obtenir ce résultat.
Il est a noté que pour gérer le drag d'une position a l'autre, je me sert des evenements Mousedown, up et move.
Lorsque dans Mousedown je fait return 0; je n'arrive pas a selectionner l'item cliqué ni les items survolé avec mousemove via :
ListView_SetItemState(ipl->m_liste, ligne, LVIS_SELECTED ,LVIS_SELECTED);
Par contre si je retourne CallWindowProc((WNDPROC)ancienne_listview_proc, hwnd, Message, wParam, lParam); mon item est bien sélectionné et les items survolé se sélectionnent aussi, mais par contre je ne recoit plus l'evenement mouseup ! donc lors d'un simple clic sans drag, le drag reste enclenché...
comment remedier a cela ?
merci
Ma listview n'a pas FullRowSelect.
Partager