2013-04-01 4 views
15

詳細ビューのWindows 7のWindowsエクスプローラのリストビュー(what allegedly is not list view at all)では、最初の(の名前)列の選択マーキーを開始できます。あなたは実際の名前の外で始める必要があります。エクスプローラスタイルのリストビューでの選択を最初の列から開始できるようにする

Windows 7's Windows Explorer Selection Marquee

同じでは詳細ビューのデフォルトスタイルリストビューコントロールのために真です。

ただし、リストビューコントロールをエクスプローラスタイル(SetWindowThemeを使用)に設定すると、Windowsエクスプローラを模倣する必要がありますが、これはもう機能しません。 2番目以降の列でのみ選択を開始できます。

SetWindowTheme(listView1.Handle, "explorer", null); 

リストビューをエクスプローラの選択スタイルに似せる方法はありますか?

このような動作を有効にする設定はないと思いますが、これはコード化する必要があります。マウスを操作して選択をトリガするように。しかし、私はそれをどうやって行うのか分かりません。

ありがとうございました。

Ntb、私はC++ Builderを使用していますが、これは純粋にWin32の問題です。私もWinFormsでこれをテストしました(したがって、上記のC#サンプル)。

+0

誰もが同意判決を忘れているので、多くのことがシェルに残されています。 –

+0

@JonathanPotterなぜMSはDirectUIHwndを文書化してパブリックコントロールにするべきだと思いますか? –

+0

@David Heffernan:http://en.wikipedia.org/wiki/United_States_v._Microsoft –

答えて

8

実際には、エクスプローラの選択動作を模倣する方法があります。追加の宣言的な作業がたくさん必要ですが、可能です。

文書化されていないLVM_QUERYINTERFACEメッセージを使用して、文書化されていないIListViewインターフェイスを取得する必要があります(Windows VistaおよびWindows 7+ではインターフェイス宣言とGUIDが異なります)。定数や宣言の詳細については、ここで見つけることができます:ジェフ・チャペルで

インターフェイスを取得した後は、単にSetSelectionFlags(1, 1)メソッドを呼び出すだけです。あなたは完了です。

+0

ありがとう!あなたは 'SetSelectionFlags'の値をどこで見つけましたか? –

+0

私はこれをWindows 7,8および10で正常にテストしました.Vistaでは動作しません(はい、Vista固有のGUID /インターフェイスを使用しました)。私はVista固有のインターフェイスを取得することができますが、 'SetSelectionFlags'は何の効果もありません。 Windows XPのリストビューに 'LVM_QUERYINTERFACE'メッセージを送ることの副作用は経験していません。 –

+0

将来のバージョンのWindows –

11

エクスプローラの選択スタイルを模倣したリストビューを作成する方法はありますか?

いいえ、SysListView32explorerテーマはそのように動作しません。現代のエクスプローラで使用されるコントロールは、実際にはDirectUIHwndです。そしてあなたはそれらの1つを使うことができません。

DirectUIHwndの動作を取得する唯一の方法は、自分でコードを作成することです。私はそうすることができると期待していますが、私はそれが達成することが非常に困難であることも期待しています。

+0

ありがとうございます。私はそれが私が望むように振る舞うように何も設定することができないとかなり確信していた。私はこれをコード化しなければならないと考えています。私はちょうど方法を知らない。明示的にするために質問を編集しました。 –

+4

さて、元の質問に答えました。明らかに、そのような制御を行うことは可能です。 Explorerはそれを証明しています。 'SysListView32'に移植するのが大変かどうかは別の問題です。私は懐疑的だ。 –

+0

バウンティはあなたに行く、私は、残念ながら、より良い答えを得ていない:)ありがとう。 –

関連する問題