リストビューでのドラッグ&ドロップでの反転表示
VC++にてエクスプローラもどきを作成していて、
ドラッグ&ドロップの操作を実装中です。
ListViewにて、OnLButtonDown内で
マウスで押下されたフォルダイメージを
CreateDragImageで作成しマウスカーソルを変更しました。
そして、ドラッグ中に、別フォルダへカーソルが移動した際、
そのフォルダを反転させるために、
OnDragOver内で、まず、全ての選択状態をクリアし、
for ( i = 0; i < list.GetItemCount(); i++ ){
item.iItem = i;
ListView_GetItem( list, &item2 );
item2.state = 0;
item2.stateMask = LVIS_SELECTED;
ListView_SetItem( list, &item );
}
対象となるフォルダのLV_ITEMを取得後に、
item.state = LVIS_SELECTED;
item.stateMask = LVIS_SELECTED;
ListView_SetItem( list, &item );
を行い選択状態に変更させました。
一応、ドラッグ&ドロップは、ある程度できているのですが、
描画が汚く、下記の2点について困っています。
1.ドラッグされたフォルダの反転表示が綺麗ではない(画像参照)
2.カーソル下に何のフォルダも無い場合は、
全ての選択状態をクリアだけでDragOverの処理を終了しているが、
前回選択状態にしたフォルダが反転表示(汚い状態で…)されたまま
なにか、修正方法はありますでしょうか?