MFC InsertColumn的问题
来源:互联网 发布:苔藓微景观制作 知乎 编辑:程序博客网 时间:2024/06/06 10:02
今天在写一个获取磁盘信息的小程序,通过list控件显示各磁盘信息。我在属性页(CPropertyPage)的构造函数中,调用list控件的InsertColumn方法,编译链接都通过了,但运行时冒出了一个Debug Assertion Failed!提示
我就改用调试方式运行,再弹出该对话框时,选择重试,最后程序中断指向了
_AFXCMN_INLINE int CListCtrl::InsertColumn(int nCol, const LVCOLUMN* pColumn)
{ ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTCOLUMN, nCol, (LPARAM)pColumn); }
其中,m_hWnd为0x00000000
监视(watch)窗口的 @err,hr(即,GetLastError)为
@err,hr 0x00000578 无效的窗口句柄。 unsigned long
起初,我没在意m_hWnd和@err,hr的值,只是看到出错点是CListCtrl::InsertColumn就上网查。不过网上有关调用CListCtrl::InsertColumn出错的文章很少!但有个帖子模模糊糊提到了可能是窗体类还没创建引起的错误。后来我再用调试运行执行程序,执行来到刚刚出错的地方,发现SendMessage的m_hWnd为0x00000000,说明此时list控件还没有创建。
我是在属性页(CPropertyPage)的构造函数中调用InsertColumn的,CPropertyPage为窗体,继承于CDialog。程序执行到CPropertyPage构造函数时,属性页还没创建完成,其中的控件也还没创建完成,在调用InsertColumn时,向list控件发送一个LVM_INSERTCOLUMN消息,但由于list控件还没有创建,才会引起无效的窗口句柄错误!将InsertColumn方法放在CPropertyPage::OnInitDialog()中调用,问题就解决了!
要是刚开始我注意了m_hWnd或 @err,hr的值,问题很快就能解决!看来要好好改改思维习惯了
@err,hr是我从《Windows核心编程》学到的一个技巧,它的功能等同于GetLastError,但使用起来比GetLastError方便多了!只要程序调试时在监视(watch)窗口,加上一项@err,hr,就能查看到每一步调试运行时的Error Code,并且有对Error Code的文本描述。而不需要在程序中加入GetLastError代码来获取Error Code,再用Error Lookup工具将Error Code转换成相应的文本描述!不过@err,hr不是每个IDE都支持的,我试过vc++6.0 sp6用不了,vs2005就可以!
- MFC InsertColumn的问题
- 关于MFC中CListCtrl::InsertColumn()和InsertItem()和SetItemText()的一些认识
- CListCtrl的InsertColumn无效,解决办法
- list control的insertColumn无法添加行
- MFC|ListCtrl中InsertColumn后标题不显示
- CListCtrl 类中InsertItem, InsertColumn, SetItemText 的使用
- 【VS开发】list控件的InsertColumn方法出错
- [MFC]UpdateData()的问题
- 学习MFC的问题
- MFC界面风格的问题!
- MFC的细节问题
- MFC的两个问题
- MFC 遇到的问题
- MFC移植的问题
- CListCtrl::InsertColumn出错
- [MFC]MFC中变量数组的问题
- MFC控件的消息问题
- MFC关闭线程的问题
- 使用指定构造器和参数列表构造实例
- SQL项目总结
- [leetcode]Excel Sheet Column Number
- android system.img,ramdisk.img,boot.img 分析
- 安装SQL Server 2008过程
- MFC InsertColumn的问题
- http://blog.csdn.net/hintcnuie/article/details/38468093
- Java Web 程序员的职业进阶之路
- android4.4版本获取图片问题:
- 动作表解析执行 记录
- try catch 的使用
- 链表建立多项式
- 远程服务下载文件 概述 及 小技巧
- 使用Golang开发微信公众平台----接收消息