【问题标题】:MFC CLisCtrl: How do I get notified when the user has reordered columns?MFC CLisCtrl:当用户对列重新排序时,我如何得到通知?
【发布时间】:2012-05-12 12:32:49
【问题描述】:

我添加了允许用户拖动列的 LVS_EX_HEADERDRAGDROP 样式:

myListControl_.SetView(LVS_REPORT);
myListControl_.SetExtendedStyle(LVS_EX_HEADERDRAGDROP);

这工作正常。但是,当用户对列重新排序时,我如何获得通知,以便我可以保存新的排序?

【问题讨论】:

    标签: winapi visual-c++ mfc


    【解决方案1】:
    ON_NOTIFY_EX(HDN_ENDDRAG, 0, OnHeaderEndDragMethod)
    

    Header_GetOrderArray

    【讨论】:

    • 实际上这是有问题的,因为在此事件的处理程序中,新的列顺序似乎还没有通过GetColumnOrderArray获得。
    • Code Project: CListCtrl Which Can Show and Hide Columns DL 项目。如果您深入研究 CListCtrl_Column_Picker::OnHeaderEndDrag 方法,您会看到 pNMH->pitem->iOrder 为您提供了被拖动列的新位置编号。为 HDN_BEGINDRAG 添加一个事件监听器以获取列的原始位置,然后您可以从那里获取列顺序的变化。
    猜你喜欢
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2020-12-21
    • 2020-02-28
    • 1970-01-01
    相关资源
    最近更新 更多