csdnzengchihe 2018-01-18 11:35 采纳率: 78%
浏览 2048
已采纳

急急急!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);不要弄混淆了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 广告联盟的兜底广告是什么意思
  • ¥15 如何证明高斯噪声的包络公式
  • ¥150 寻找王者荣耀开发作者,合作或者解答
  • ¥15 乳腺癌数据集 相关矩阵 特征选择
  • ¥15 我的游戏账号被盗取,请问我该怎么做
  • ¥15 通关usb3.0.push文件,导致usb频繁断连
  • ¥15 有没有能解决微信公众号,只能实时拍照,没有选择相册上传功能,我不懂任何技术,,有没有给我发个软件就能搞定的方法
  • ¥15 Pythontxt文本可视化
  • ¥15 如何基于Ryu环境下使用scapy包进行数据包构造
  • ¥15 springboot国际化