csdnzengchihe 2018-01-18 03:35 采纳率: 78%
浏览 2077
已采纳

急急急!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 04: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 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
  • ¥15 IEC61850 客户端和服务端的通讯机制
  • ¥15 MAX98357a(关键词-播放音频)
  • ¥15 Linux误删文件,请求帮助
  • ¥15 IBMP550小型机使用串口登录操作系统
  • ¥15 关于#python#的问题:现已知七自由度机器人的DH参数,利用DH参数求解机器人的逆运动学解目前使用的PSO算法
  • ¥15 发那科机器人与设备通讯配置
  • ¥15 Linux环境下openssl报错
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部