【发布时间】:2009-09-15 11:46:11
【问题描述】:
在处理派生自 CListCtrl 的自定义类的 HDN_ENDTRACKW 消息时遇到了一点问题。
基本上,似乎在发送此消息时,存储列宽度的实际值直到我的处理代码执行后才更新。
句柄内的代码只是指示进度条调整大小,以填充调整后的列的宽度。 代码:
void ProgListCtrl::OnEndTrack(NMHDR* pNMHDR, LRESULT* pResult)
{
int width = ListView_GetColumnWidth(GetSafeHwnd(), m_nProgressColumn);
ResizeProgressbar();
}
ListView_GetColumnWidth 目前只是为了帮助调试。
我正在更改的特定列的默认值为 150,当我在 UI 中调整列的大小时,会调用此方法但宽度保持在相同的 150,进度条不会调整大小。仅当再次调整列大小时,宽度值现在才反映第一次调整大小后列的值,然后 ResizeProgressBar 方法正确更改 progbar 大小以填充它所在的列。这是连续的,宽度值似乎总是比实际值落后一步。
我会感谢任何帮助。干杯。
【问题讨论】:
标签: c++ mfc event-handling clistctrl