Windowsエクスプローラーと同じ方法で、ListView
コントロール(Windowsフォーム/ pinvoke経由のWin32)で列フィルターを実装しようとしています。それを使用していないものにとっては、このようになります前に:ListViewコントロールのヘッダーでWindowsエクスプローラーの列フィルターを複製する方法
あなたは、ドロップダウンをクリックすると、矢印が表示されるドロップダウンヘッダーの列の上にカーソルを置くさまざまなフィルタリングオプションを持つコンテキストメニューが表示されます。あなたは、オプションを選択したら、次のように、常に表示されている目盛りの画像に矢印画像の変更: 私はHDF_SPLITBUTTON
とリストビューにHDM_SETITEMメッセージを送信することにより、表示するドロップダウン矢印を持って
フォーマットフラグが指定されています。私は、フィルタリングメニューを表示することもできます。
問題は、「ティック」画像を表示する方法を理解できないことです。まあ、オーナーの描画を使うことに頼る以外のことは、本当に過度のようです。私はListViewとHeaderコントロールのAPIドキュメントを見てきましたが、画像を変更するために送信できるウィンドウメッセージはないようです。それを回避するために
Iは、フィルタリングがアクティブであることを示すために、ヘッダ画像を用いて試みたが、あなたがHDF_SORTUP
又はHDF_SORTDOWN
と同時にHDF_IMAGE
又はHDF_BITMAP
を使用することはできませんHDITEMマニュアルに従って。そこで、ソートとフィルタリングの両方の状態を示す新しい画像を作成しましたが、今度はすべてListView
アイテムがカラムヘッダイメージのサイズで字下げされています(c#ListView
コントロールの既知の問題のようです)。
私は有望だった何かを見つけました。BCM_SETSPLITINFO
は、分割ボタンのグリフを設定します。しかし、ヘッダーには分割ボタンである子ウィンドウがない限り、分割ビューではなくListViewヘッダーがあります。
誰もが完全な所有者を実装せずにその「ティック」マークを複製する方法を知っています溶液?
おかげ
グレッグ
ListViewのようですが、[それはありません](http://stackoverflow.com/questions/4089196/netuihwnd-and-directuihwnd)。 –
ああ!それはそれを説明するだろう、私は前にDirectUIHWNDについて聞いていない。私はWin32 ListViewコントロールでこのような苦労を経験したことは間違いありません。私はSpy ++を実際に試しましたが、ヘッダーが別のウィンドウであることが分かりました。 – Greg