Winapi 请求刷新LVN_GETEMPTYMARKUP

Winapi 请求刷新LVN_GETEMPTYMARKUP,winapi,visual-c++,listview,Winapi,Visual C++,Listview,我正在使用LVN\u GETEMPTYMARKUP在我的ListCtrl中显示一些文本,直到它得到一些内容。我面临的问题是,我似乎无法找到一种方法来刷新此文本并有效地强制ListCtrl多次发送此通知 有没有办法告诉ListCtrl刷新“标记”我查看了源代码,listview控件似乎只发送了一次查询并缓存结果 因此,我认为获得所需行为的唯一方法是适当地重新创建控件。这是一个相当古老的线程,但是我遇到了这个问题,并将为任何像我一样来到同一个地方的人提供答案 通过向listview发送LVM_RES

我正在使用
LVN\u GETEMPTYMARKUP
在我的ListCtrl中显示一些文本,直到它得到一些内容。我面临的问题是,我似乎无法找到一种方法来刷新此文本并有效地强制ListCtrl多次发送此通知


有没有办法告诉ListCtrl刷新“标记”

我查看了源代码,listview控件似乎只发送了一次查询并缓存结果


因此,我认为获得所需行为的唯一方法是适当地重新创建控件。

这是一个相当古老的线程,但是我遇到了这个问题,并将为任何像我一样来到同一个地方的人提供答案


通过向listview发送LVM_RESETEMPTYTEXT=(LVM_FIRST+84)消息,或者通过获取IListView接口并执行RESETEMPTYTEXT方法,可以将LVN_GETEMPTYMARKUP消息重新发送到listview。通过这种方式,您可以有条件地更改或清除空文本:)

您必须再次将其变为空。好的,但是如果它保持空一段时间,并且我想根据应用程序的状态触发两条消息,该怎么办?基本上,我的清单一开始就没有任何项目。我应该插入一个假人并立即清除吗?听起来应该这样做了。FWIW,即使在我清除了控件中的项之后,我也再也不会得到LVN_GETEMPTYMARKUP查询了。它似乎无限期地缓存它…谢谢,这是有效的。遗憾的是,我们不得不为如此琐碎和明显的事情求助于未记录的消息。但这正是当今微软的典型特征。