csdnzengchihe
2018-01-18 11:35
采纳率: 78%
浏览 1.8k

急急急!MFC自绘ListCtrl控件后不能insertitem,只要插入行执行就报错

下面是我参考的博客上自绘的控件http://blog.csdn.net/candcplusplus/article/details/9005697
然后下面是我在我的OnInitDialog()函数中添加的代码
m_List.ModifyStyle( 0, LVS_REPORT ); // 报表模式

m_List.SetExtendedStyle(m_List.GetExtendedStyle() | LVS_EX_GRIDLINES );

CRect rect;

m_List.GetClientRect(rect); //获得当前客户区信息

    m_List.InsertColumn(0,"端口号");  //插入列
m_List.InsertColumn(1,"IP");  
m_List.InsertColumn(2,"choose"); 
m_List.SetColumnWidth(0, rect.Width() / 3); //设置列的宽度。  
m_List.SetColumnWidth(1, rect.Width() / 3);  
m_List.SetColumnWidth(2, rect.Width() / 3);  

    int row=14;
    m_List.SetRowHeight(rect.Height()/row);
m_List.InsertItem(0,"11");//插入行


m_List.SetItemText(0,1,"好棒哦");
m_List.SetWindowPos(&wndBottom ,0,0,rect.Width(),rect.Height(),SWP_NOSIZE);

执行之后出来这个
图片说明
本人编程小白,捣鼓了很久还没捣鼓出来,求csdn大神们相助!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • busifriend 2018-01-18 12:40
    已采纳

    问题应该出在 m_List.SetRowHeight(rect.Height()/row);除去这一句,在VC6上运行都没有问题。具体的说,问题出在:
    函数里。因为SetRowHeight要触法调用该函数。这是一个断言错误。其原因是,你并没有重载该函数。正确的方法是,在CMyListCtrl.h文件中
    的public部分加上:
    virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
    另外,CListCtrl本身还有一个函数afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);不要弄混淆了。

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题