我在Windows上使用MSVC 2012下的C++。我使用純Win32 w /對話框,沒有MFC。Win32更改列表視圖項目索引
我有給定項目的LVITEM結構。我想更改給定ListView上的項目的索引,以便我可以重新排列項目的位置。 .iItem
屬性本質上是我想改變的,但是,我不知道如何在列表視圖中反映這些變化。
如果可能,我希望ListView自動移動下面移動項目的位置,而不是覆蓋新位置中的現有項目。
我在Windows上使用MSVC 2012下的C++。我使用純Win32 w /對話框,沒有MFC。Win32更改列表視圖項目索引
我有給定項目的LVITEM結構。我想更改給定ListView上的項目的索引,以便我可以重新排列項目的位置。 .iItem
屬性本質上是我想改變的,但是,我不知道如何在列表視圖中反映這些變化。
如果可能,我希望ListView自動移動下面移動項目的位置,而不是覆蓋新位置中的現有項目。
列表視圖項目的索引只會作爲操縱項目集合的副作用而改變。通過在它之前插入一個新項目來增加它,LVM_INSERTITEM。您可以通過刪除它之前的項目LVM_DELETEITEM來減少它。您先移動一個項目,然後將其重新插入另一個位置。或者通過交換LVITEM屬性。
不得不照顧子項目使得這有點尷尬,但這樣寫入本機win32代碼很麻煩。這就是爲什麼有這麼多類庫可以使這更容易。推薦的。
他說什麼。雖然另一種方式,你可以做到這一點是使用'LVM_SORTITEMS'排序列表和一個聰明的比較proc按照你想要的方式命令他們。 – 2013-03-16 12:32:18
LVM_SORTITEMS是永久的嗎?ie:如果我改變排序,它是累積的嗎? – kvanberendonck 2013-03-17 10:10:46
你在談論ListView處於報告(詳細)模式還是圖標視圖之一? – 2013-03-16 09:54:07
投訴/詳細視圖:) – kvanberendonck 2013-03-16 10:00:02
我不認爲可以通過更改索引來移動項目。沒有'LVM_SETITEMINFO'消息或類似的東西。 (好吧,有'LVM_SETITEM',但是它不能改變索引,因爲它使用它來識別項目。)我見過的唯一方法是從當前位置移除項目,然後重新插入它進入新的位置。希望別人知道我不喜歡的東西! – 2013-03-16 10:06:18