読者です 読者をやめる 読者になる 読者になる

タブファイラー開発ブログ

Tablacus ExplorerやX-Finderの作者のブログ

混在ソート、総ファイルサイズ ソートの実現方法 - Tablacus Explorer

混在ソートと総ファイルサイズ ソートのアドオンを作成しました。
X-Finderの場合は自分でファイルやフォルダの一覧を管理しているので、項目の順序を好きな順にすることは、そう難しいことではありません。
しかし、Tablacus Explorerの場合は中でエクスプローラを動かしている様なものなので、今までその順序を変更する方法が分かっていませんでした。
エクスプローラと同じという動作はそのままなので楽ですが、違うことをしようとすると困難になります。

そして、試行錯誤してやっと順序を入れ替える方法を見つけました。
という訳で今回はどういう方法で実現したかをブログに書きます。

基本的には IShellView2::SelectAndPositionItem で 指定する項目のPOINTを先頭の項目の位置に設定するとその項目が最初の項目になります。

しかし、うまく動かすには以下の設定を行う必要がありました。

1.表示モードは「詳細」「一覧」以外にする
詳細、一覧の場合は並べ替えの際に別の表示にして元に戻せばOK
Tablacus Explorerの場合は「詳細」「一覧」の場合は一時的に「並べて表示」にしているのでソートの際に「並べて表示」がちょっと見えます。(※描画を一時停止して見えなくしました)

2.FolderFlagsのFWF_AUTOARRANGEをオンにする。
これも並べ替えの前にIShellView2::SetCurrentFolderFlagsでFWF_AUTOARRANGEをオンにして元に戻せばOK

3.グループで表示は「なし」にする
グループ表示をしているとうまく動きません。

4.FolderViewOptionsのFVO_VISTALAYOUTをオンにする
IExplorerBrowser::SetFolderViewOptionsで設定するFVO_VISTALAYOUTもオンじゃないと動きません。しかもこの設定FolderViewOptionsはフォルダの移動前に設定しないと効果が出ないので注意です。同じフォルダを指定して IExplorerBrowser::BrowseToObject や IExplorerBrowser::BrowseToObject を実行してもまだ設定が切り替わりません。

5.Windows Vista以降
上記の設定を行ってもWindows XPではうまく動きませんでした。