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 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?