OVH Cloud OVH Cloud

corruption d'affichage du CListCtrl dans le cadre du Drag'n Drop

1 réponse
Avatar
jmvic
bonjour,

j'utilise un CListCtrl et veux mettre en place un m=E9canisme de glisser/
d=E9poser depuis ce controle graphique. J'y suis presque parvenu, mais
il me reste =E0 r=E9gler un pb.

La liste affiche des icones qui font une taille de 64x64 pixels. Quand
l'utilisateur d=E9marre une op=E9ration de glisser/d=E9poser en cliquant sur
une icone qui ne se trouve pas totalement affich=E9e dans la "vue" du
CListCtrl, au bout d'une seconde environ, l'affichage est raffraichie
pour permettre de pr=E9senter au mieux l'=E9l=E9ment s=E9lectionn=E9 (celui=
qui
va =EAtre gliss=E9 puis d=E9pos=E9); Mais cela provoque une "bavure" dans
l'affichage car l'image cr=E9=E9e sous le curseur dans le cadre de
l'op=E9ration du glisser/d=E9pos=E9 s'incorpore dans la vue du CCtrlList au
moment ou celui-ci la met =E0 jour en r=E9alisant un "scrolling".

Quelle peut =EAtre la solution?
a/ peut =EAre en neutralisant la mise =E0 jour de l'affichage
b/ ou bien, en forcant au pr=E9alable sa mise =E0 jour, avant d'entamer
l'op=E9ration glisser/d=E9poser

Merci.

1 réponse

Avatar
Christian ASTOR
wrote:

j'utilise un CListCtrl et veux mettre en place un mécanisme de glisser/
déposer depuis ce controle graphique. J'y suis presque parvenu, mais
il me reste à régler un pb.

La liste affiche des icones qui font une taille de 64x64 pixels. Quand
l'utilisateur démarre une opération de glisser/déposer en cliquant sur
une icone qui ne se trouve pas totalement affichée dans la "vue" du
CListCtrl, au bout d'une seconde environ, l'affichage est raffraichie
pour permettre de présenter au mieux l'élément sélectionné (celui qui
va être glissé puis déposé); Mais cela provoque une "bavure" dans
l'affichage car l'image créée sous le curseur dans le cadre de
l'opération du glisser/déposé s'incorpore dans la vue du CCtrlList au
moment ou celui-ci la met à jour en réalisant un "scrolling".



On utilise ImageList_DragShowNolock()
(+ cf MS exemples (KB148738, etc...))