Windows 10 Fall Creators Updateではリスト ビューでスクロールバーが出ている場合、マウスの範囲選択での複数選択をするとカーソルが画面の端っこに吹っ飛んでしまうという不具合があります。
Tablacus Explorerというファイル管理ソフトではアドオンを使って対策しています。
最初はマウスカーソルが端っこの場合、元の位置に戻すという対処療法でした。
これにはひとつ問題があり、マウスカーソルが飛んでからの対処療法なのでマウスカーソルが一度、端っこに行ってしまう為にどうしてもリストがスクロールしてしまいます。
スクロール位置も覚えて戻そうかなとテストしていたところ(リストビューのスクロール位置を戻すのが、詳細とその他やグループの有無で違うなど結構ややこしいかったのです)
デバッグ ビューで数値を表示してみると何故かマウスカーソルの吹っ飛んでしまう現象が起こりません。
もしかしてと思い
リストのマウスカーソル移動時で左右ボタンが押されている場合に、RedrawWindow
で再描画を行うようにしてみました。
予想通り不具合は発生しなくなりました。
なんでこんなので直るのかは私には解りませんが、とにかく直りました。
ソースはこんな感じです。
if (window.Addon == 1) {
AddEvent("MouseMessage", function (Ctrl, hwnd, msg, wParam, pt)
{
if (Ctrl.Type == CTRL_SB && msg == WM_MOUSEMOVE) {
if (api.GetKeyState(VK_LBUTTON) < 0 || api.GetKeyState(VK_RBUTTON) < 0) {
api.RedrawWindow(Ctrl.hwnd, null, 0, RDW_NOERASE | RDW_INVALIDATE);
}
}
});
}
リストビューじゃなくても何かをRedrawWindow
で再描画すればOkっぽいです。
Windows 10 Fall Creators Updateでマウスカーソルが吹っ飛んで困っている方、ご自由にお使いください。
追記:2017/12/7
マウスのグローバルフックを使った対策ソフトができました。