检测CListCtrl列的大小调整

时间:2019-06-14 14:07:22

标签: c++ windows mfc

我有一个非常简单的对话框,基本上在报告模式下包含一个CListCtrl,其中包含多列和标题。

现在,我需要检测用户何时调整了列的大小,并希望每次用户调整列的大小时都会调用OnHdnChanged

在其他人中,我的消息映射中有这个,IDC_LIST1是列表控件的ID。

ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList)
ON_NOTIFY(HDN_ENDTRACKW, IDC_LIST1, OnHdnChanged)

OnHdnChanged功能:

void CMyDlg::OnHdnChanged(NMHDR* pNMHDR, LRESULT* pResult)
{
  ...
  *pResult = 0;
}

void CSanDlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
  ...
可能会调用

OnItemchangedList,但不会调用OnHdnChanged。我认为未调用OnHdnChanged是因为标头控件的父级不是我的对话框,而是列表控件。

有人知道我能做什么吗?

1 个答案:

答案 0 :(得分:3)

我只是看着这个old article,这建议将ON_NOTIFY更改为ON_NOTIFY(HDN_ENDTRACKW, 0, OnHdnChanged),因为标头控件的控件ID似乎总是为0。

我不知道这是否仍然正确,但是值得检查。


编辑:根据响应评论进行更新。 Here是我遇到的另一个建议,它是CListCtrl的子类并在那里处理通知。大概该处理程序可以将实际的处理逻辑委托给其父级。