2013-01-23 48 views
3

我正在使用LVN_GETEMPTYMARKUP在我的ListCtrl中顯示一些文本,直到它獲得一些內容。我面臨的問題是我似乎無法找到一種方法來刷新此文本並有效地強制ListCtrl不止一次地發送此通知。請求刷新LVN_GETEMPTYMARKUP

有沒有辦法告訴ListCtrl刷新「標記」?

+1

你將不得不再次清空。 –

+0

好的,但是如果它在一段時間內一直空着,我想根據應用的狀態觸發兩條消息呢?基本上,我的列表從來沒有任何項目開始。我應該插入一個虛擬並立即清除?聽起來像是應該做的。 – wpfwannabe

+1

FWIW,即使清除了我的控件中的項目後,我再也不會收到LVN_GETEMPTYMARKUP查詢。它似乎無限期地緩存... – EricLaw

回答

3

我看了看源代碼,看來listview控件只發送一次LVN_GETEMPTYMARKUP查詢並緩存結果。

因此,我相信獲得您要查找的行爲的唯一方法是根據需要重新創建控件。

1

那麼這是一個相當古老的線程,但我遇到了這一點,並會爲任何來到像我這樣的地方的任何人提供一個答案。

可以通過向列表視圖發送LVM_RESETEMPTYTEXT =(LVM_FIRST + 84)消息或通過獲取IListView接口並執行ResetEmptyText方法,將LVN_GETEMPTYMARKUP消息重新發送到列表視圖。通過這種方式,你可以有條件地改變或清除空的文本:)