MS标头控制 - 如何更新(重绘)只有1项?

时间:2013-03-12 09:36:39

标签: winapi header controls refresh

我们正在使用OS常用控件lib中的标准Header控件。我们需要强制控件刷新与只有一个列标题(item)相关的区域。是否有特殊的WinAPI消息,或者我们可以使用的技巧?

2 个答案:

答案 0 :(得分:4)

使用HDM_GETITEMRECT消息获取相关项目的矩形,然后使用InvalidateRect功能刷新它。

答案 1 :(得分:0)

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

Dim tHI As HD_ITEM
tHI.mask = HDI_TEXT
SendMessage m_hWnd, HDM_SETITEM, lCol, tHI

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

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