Winapi MFC CLisCtrl:当用户对列重新排序时,如何获得通知?
我添加了LVS_EX_HEADERDRAGDROP样式,允许用户拖动列:Winapi MFC CLisCtrl:当用户对列重新排序时,如何获得通知?,winapi,visual-c++,mfc,Winapi,Visual C++,Mfc,我添加了LVS_EX_HEADERDRAGDROP样式,允许用户拖动列: myListControl_.SetView(LVS_REPORT); myListControl_.SetExtendedStyle(LVS_EX_HEADERDRAGDROP); 这很好用。但是,当用户对列重新排序时,如何得到通知,以便保存新的排序 ON_NOTIFY_EX(HDN_ENDDRAG, 0, OnHeaderEndDragMethod) 事实证明这是一个问题,因为在该事件的处理程序中,新的列顺序似乎还
myListControl_.SetView(LVS_REPORT);
myListControl_.SetExtendedStyle(LVS_EX_HEADERDRAGDROP);
这很好用。但是,当用户对列重新排序时,如何得到通知,以便保存新的排序
ON_NOTIFY_EX(HDN_ENDDRAG, 0, OnHeaderEndDragMethod)
事实证明这是一个问题,因为在该事件的处理程序中,新的列顺序似乎还不能通过
GetColumnOrderArray
DL从项目中获得。如果深入研究CListCtrl\u Column\u Picker::onheaderndrag方法,您将看到pNMH->pitem->iOrder为您提供了被拖动的列的新位置号。为HDN_BEGINDRAG添加一个事件监听器,以获取列的原始位置,从那里可以获得列顺序的更改。