Winapi MS标头控件-如何仅更新(重新绘制)1项?

Winapi MS标头控件-如何仅更新(重新绘制)1项?,winapi,header,controls,refresh,Winapi,Header,Controls,Refresh,我们使用的是OS公共控件库中的标准头控件。我们需要强制控件刷新仅与一个列标题(项)相关的区域。是否有一个特殊的WinAPI消息,或者我们可以使用的技巧?使用HDM\u GETITEMRECT消息获取问题项的矩形,然后使用invalidate函数刷新它。使用HDM\u GETITEMRECT消息获取问题项的矩形,然后使用函数刷新它。我们使用了以下技巧,因为列标题文本不会直接存储在标题中(VB6代码): 事实上,我们没有更改项目,但是标题“认为”它发生了,所以实际上我们强制标题重新绘制项目 警告:在

我们使用的是OS公共控件库中的标准头控件。我们需要强制控件刷新仅与一个列标题(项)相关的区域。是否有一个特殊的WinAPI消息,或者我们可以使用的技巧?

使用
HDM\u GETITEMRECT
消息获取问题项的矩形,然后使用
invalidate
函数刷新它。

使用
HDM\u GETITEMRECT
消息获取问题项的矩形,然后使用
函数刷新它。

我们使用了以下技巧,因为列标题文本不会直接存储在标题中(VB6代码):

事实上,我们没有更改项目,但是标题“认为”它发生了,所以实际上我们强制标题重新绘制项目


警告:在这种情况下发送HDN_ITEMCHANGING,因此在使用此技巧时忽略它。

我们使用了以下技巧,因为列标题文本不会直接存储在标题中(VB6代码):

事实上,我们没有更改项目,但是标题“认为”它发生了,所以实际上我们强制标题重新绘制项目


警告:在这种情况下会发送HDN_ITEMCHANGING,因此使用此技巧时请忽略它。

确切地说,您为什么需要这样做?重新绘制整个头文件有什么害处?@CodyGray,我们在开发一个。我们正在努力让它完全不闪烁,所以画得越少越好;)你为什么要这么做?重新绘制整个头文件有什么害处?@CodyGray,我们在开发一个。我们正在努力让它完全不闪烁,所以画得越少越好;)很好,这也可以工作-虽然需要一个以上的API调用:)但这是一个更“合适”的方式。很好,这也可以工作-虽然需要一个以上的API调用:)但这是一个更“合适”的方式。
Dim tHI As HD_ITEM
tHI.mask = HDI_TEXT
SendMessage m_hWnd, HDM_SETITEM, lCol, tHI