Visual studio 2008 CListView DeleteColumn()删除错误的列
我有一个CListView,它是一个所有者绘制的CHeaderCtrl的子类,所以我可以做一些事情,比如有一个弹出菜单,允许用户选择或取消选择要显示的列,移动列,更改列的宽度,以及在标题上显示排序顺序图标。它的99%工作得很好 我的问题是,如果我将一列拖到另一个位置,然后立即右键单击并从弹出菜单中取消选择一列,我就无法确定要删除哪一列。我已将iSubItem字段设置为我的字段标识符。我尝试过使用物理偏移量来删除,我也尝试过使用GetColumn来查找我的iSubItem编号并获取iOrder并使用它来删除。不管怎样,它都不可靠 如果我首先单击列标题,则使用实际偏移量,DeleteColumn是完全可靠的。在检查数据时,似乎控件在单击iOrder后就将其与实际订单同步 我试着在HeaderCtrl和主列表上调用Invalidate,但没有任何帮助。我想我需要做点什么才能使事情恢复同步,但在花了几个小时胡闹之后,我已经智穷了Visual studio 2008 CListView DeleteColumn()删除错误的列,visual-studio-2008,mfc,Visual Studio 2008,Mfc,我有一个CListView,它是一个所有者绘制的CHeaderCtrl的子类,所以我可以做一些事情,比如有一个弹出菜单,允许用户选择或取消选择要显示的列,移动列,更改列的宽度,以及在标题上显示排序顺序图标。它的99%工作得很好 我的问题是,如果我将一列拖到另一个位置,然后立即右键单击并从弹出菜单中取消选择一列,我就无法确定要删除哪一列。我已将iSubItem字段设置为我的字段标识符。我尝试过使用物理偏移量来删除,我也尝试过使用GetColumn来查找我的iSubItem编号并获取iOrder并使
有什么想法吗?谢谢 正如评论中所说 事实上,CHeaderCtrl::OrderToIndex解决了这个问题
因为我使用GetColumn检索与我的子项值关联的订单,所以将订单传递给OrderToIndex为我提供了传递给DeleteColumn的适当索引没有MCVE很难理解这一点。也许CHeaderCtrl::OrderToIndex会有帮助。请原谅我没有发布代码,这一点非常复杂,我觉得它可能会弄脏水。不过你成功了。非常感谢您抽出时间发表您的想法。