MFC 在ListCtrl中插入列后调试报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 在ListCtrl中插入列后调试报错相关的知识,希望对你有一定的参考价值。

在resource.h中定义了列的ID,在.cpp文件中定义了值的ID。原来调试是没有问题的,后来插入了几列后调试出现问题,箭头“上蹿下跳”,断点提示“该进程或线程自上一个步骤以来已更改”,不能一步一步的调试了,最后出现图中的错误提示。请各位大侠帮帮忙了,先谢谢了。

(LPARAM)lvi 参考技术A 你修改了winctrl2.cpp?这个文件是系统文件,不能修改的。不过比较发现你并没有修改该文件啊!应该是你自己写的程序有问题了。贴出你自己的代码来看看才好帮你的忙啊。追问

程序能运行,就是调试变的很“乱”。人在外面,贴不了代码了,不好意思

参考技术B 代码贴出来看一下 参考技术C 代码编辑完以后重新编译调试

如何在 MFC 的 CListCtrl 中插入位图或其他图像对象?

【中文标题】如何在 MFC 的 CListCtrl 中插入位图或其他图像对象?【英文标题】:How could I insert a bitmap or other image objects in a CListCtrl in MFC? 【发布时间】:2008-10-23 06:21:21 【问题描述】:

我想在 listctrl 中列出一组照片的缩略图。但实现此目的的唯一方法是使用 setImageList 方法将图像列表绑定到 CListCtrl 对象并插入如下项:InsertItem (int nItem, LPCTSTR lpszitem, int nImage)。我还必须通过 ModifyStyle(LVS_TYPEMASK, LVS_ICON) 修改 listctrl 的样式,以强制它显示每个项目的图标。

我认为这种方法不是实现我的目标的好方法。我可以直接在 CListCtrl 中添加位图项或其他图像对象吗?

非常感谢!

【问题讨论】:

【参考方案1】:

为什么你认为这不是一个好方法?您的其他选择是使其成为所有者绘制的控件并自己渲染图像,或者通过 CListCtrl::SetCallbackMask 对图像使用回调。

列表控件使用图像列表是有原因的;位图以对呈现列表控件最有效的方式存储。你会很难做得更好。

【讨论】:

可能 OP 想要将这些图像显示为列表控件的 主要内容,在这种情况下,每个项目的图像可能不适合他的外观和感觉在这种情况下,正如您所指出的,他需要进行自定义绘制。 谢谢!但是我的情况相当复杂,我的 listctrl 中的每个缩略图都必须提供一些功能,例如根据滑块更改大小。 ImageList 能否实现这些用户自定义的功能? 啊,不,使用股票 CListCtrl 可能没有办法做到这一点。您必须使其成为所有者绘制的控件并自己进行渲染。不过做起来应该没那么难。 听起来我必须使用所有者绘制。非常感谢! 出现了另一个问题:我可以在 CListCtrl 中更改项目的大小(宽度和高度)吗?【参考方案2】:

鉴于您需要这些扩展功能,听起来您必须使用自绘。一个很好的例子是here。它没有显示如何绘制图像,但是一旦您设置了所有者绘制过程,您应该能够使用典型的 BitBlts 来绘制图像。

【讨论】:

以上是关于MFC 在ListCtrl中插入列后调试报错的主要内容,如果未能解决你的问题,请参考以下文章

MFC ListControl使用方法

如何在 MFC 的 CListCtrl 中插入位图或其他图像对象?

在MFC中使用listctrl控件,要修改某行某列的值

MFC如何让ListCtrl的CheckBox只有一个处于选中状态

MFC ListCtrl如何查找某一行的上一行或者下一行

ListCtrl控件 实现 :程序控制滚动(mfc的)