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

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

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

报告相同问题?

悬赏问题

  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器