我試圖通過Windows資源管理器以相同的方式在ListView
控件(Windows窗體/ c#/ win32通過pinvoke)上實施列過濾。對於那些還沒有使用它之前,它看起來像這樣:如何在ListView控件標題上覆制Windows資源管理器列過濾
當你將鼠標懸停在列向下箭頭出現頭下降,單擊下拉顯示各種過濾選項的上下文菜單。一旦你選擇一個選項箭頭圖像的變化,始終是可見的,這樣的刻度標記的圖像:
我有下拉箭頭通過發送HDM_SETITEM消息到ListView與HDF_SPLITBUTTON
顯示格式標誌指定。我也可以顯示過濾菜單。
我遇到的問題是我無法確定如何顯示「打勾」圖像。那麼除了訴諸使用所有者繪圖,這真的看起來像一個矯枉過正。我已經瀏覽了ListView和Header控件的API文檔,並且似乎沒有任何Windows消息可以發送來更改圖像。
要解決它,我嘗試使用的報頭的圖像,這表明篩選是有效的,但根據HDITEM文檔不能在同一時間作爲HDF_SORTUP
或HDF_SORTDOWN
使用HDF_IMAGE
或HDF_BITMAP
。因此,然後我創建了新的圖像來指示排序和篩選狀態,但現在我的所有ListView
項都縮進列標題圖像的大小(似乎是c#ListView
控件的已知問題)。
我確實發現了一些看起來很有前途的東西:BCM_SETSPLITINFO
可讓您設置拆分按鈕的字形。不過,我有一個ListView標題,而不是一個拆分按鈕,除非標題有子窗口是分割按鈕...
所以沒有任何人有任何想法如何複製該「勾號」標記而不實施完整的所有者繪製解?
感謝
格雷格
它看起來像一個ListView,[但它不是](http://stackoverflow.com/questions/4089196/netuihwnd-and-directuihwnd)。 –
啊!這將解釋它,我以前沒有聽說過DirectUIHWND。難怪我在Win32 ListView控件上遇到過如此艱難的時刻。我其實也嘗試了Spy ++,但我只是想知道標題是一個單獨的窗口。 – Greg