在cgridctrl中添加变量后,出现debug assertion failed错误

dulilihui 2009-08-27 04:41:37
在cgridctrl中添加变量 public int m_myrow时,编译通过。但一旦添加对m_myrow修改的代码时,就出现错误debug assertion failed
1,在cgridctrl中添加对m_myrow访问的函数时,编译出现错误
2,在视图类xxView中,在OnInitialUpdate里面添加m_gridctrl->m_myrow=0时,编译出错;即使把这m_gridctrl->m_myrow=0删除,问题依然存在。
希望大家能帮我解决这个问题,谢谢~~
...全文
223 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhubingchu 2009-08-28
  • 打赏
  • 举报
回复
能不能看一下源码?
发到我的邮箱,好么?
dulilihui 2009-08-28
  • 打赏
  • 举报
回复
恩,在之前已添加了
#include "GridCtrl.h"

class CDatastructView : public CView
{
//......
public:
//......
CGridCtrl * m_pGC;
//......
}
CDatastructView::CDatastructView()
{
// TODO: add construction code here
m_pGC=NULL;
......
}
zhubingchu 2009-08-28
  • 打赏
  • 举报
回复
void CDatastructView::OnInitialUpdate()
{
CView::OnInitialUpdate();
if(m_pGC==NULL)
……
_____________
在CDatastructView类的构造函数中添加
m_pGC = NULL;
dulilihui 2009-08-28
  • 打赏
  • 举报
回复
搞定了,原来是编译器有问题,现在没事了。谢谢大家
dulilihui 2009-08-27
  • 打赏
  • 举报
回复
void CDatastructView::OnInitialUpdate()
{
CView::OnInitialUpdate();
if(m_pGC==NULL)
{
m_pGC=new CGridCtrl;
if(!m_pGC) return;
CRect rect;
GetClientRect(rect);
m_pGC->Create(rect, (CWnd*)this, 111);
//。。。。。。。。。
try
{
m_pGC->SetRowCount(row_count);
m_pGC->SetColumnCount(col_count);
m_pGC->SetFixedRowCount(fixed_row_count);
m_pGC->SetFixedColumnCount(fixed_col_count);
m_pGC->m_end_col=0;
m_pGC->m_end_row=0;
m_pGC->m_start_col=0;
m_pGC->m_start_row=0;
}
//。。。。。。。。
}

}
dulilihui 2009-08-27
  • 打赏
  • 举报
回复
其实那时候已经建立CGridCtrl的对象m_pGC了
void CDatastructView::OnInitialUpdate()
{
CView::OnInitialUpdate();
if(m_pGC==NULL)
{
m_pGC=new CGridCtrl;
if(!m_pGC) return;
CRect rect;
GetClientRect(rect);
m_pGC->Create(rect, (CWnd*)this, 111);
//。。。。。。。
}
zhubingchu 2009-08-27
  • 打赏
  • 举报
回复
看明白了。
可能是CGridCtrl类的指针没有开辟空间。
你试一下,在CDatastructView的构造函数中添加下列语句:
m_pGC=new CGridCtrl;
zhubingchu 2009-08-27
  • 打赏
  • 举报
回复
当运行到CDatastructView类的OnInitialUpdate()时,CGridCtrl类的对象还没有创建,不能在此赋值。
dulilihui 2009-08-27
  • 打赏
  • 举报
回复
希望各位高手能帮小弟一把,谢谢~~
oyljerry 2009-08-27
  • 打赏
  • 举报
回复
CGridCtrl 的成员变量是否创建成功...
dulilihui 2009-08-27
  • 打赏
  • 举报
回复
另外在cgridctrl中添加修改这几个成员的函数时也出现相同的错误
void CGridCtrl::update_end_rowcol(int nRow, int nCol)
{
m_end_col=nCol;
m_end_row=nRow;
}
dulilihui 2009-08-27
  • 打赏
  • 举报
回复
部分代码:
class CGridCtrl : public CWnd
{

//......
public:
int m_end_row;
int m_end_col;
int m_start_col;
int m_start_row;
//.........
}


void CDatastructView::OnInitialUpdate()
{
CView::OnInitialUpdate();
//..........
try
{
m_pGC->SetRowCount(row_count);
m_pGC->SetColumnCount(col_count);
m_pGC->SetFixedRowCount(fixed_row_count);
m_pGC->SetFixedColumnCount(fixed_col_count);
m_pGC->m_end_col=0;
m_pGC->m_end_row=0;
m_pGC->m_start_col=0;
m_pGC->m_start_row=0;
}
//.........
}
就是添加了
m_pGC->m_end_col=0;
m_pGC->m_end_row=0;
m_pGC->m_start_col=0;
m_pGC->m_start_row=0;
这几句后就报错了。。接着把这四句删掉,运行时依旧报错...
逐句运行,到了
CGridCellBase* CGridCtrl::CreateCell(int nRow, int nCol)
{
//.....
pCell->SetFormat(pCell->GetDefaultCell()->GetFormat());
就报错,0xC0000005 access violation
clever101 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 dulilihui 的回复:]
在cgridctrl中添加变量 public int m_myrow时,编译通过。但一旦添加对m_myrow修改的代码时,就出现错误debug assertion failed
1,在cgridctrl中添加对m_myrow访问的函数时,编译出现错误
2,在视图类xxView中,在OnInitialUpdate里面添加m_gridctrl->m_myrow=0时,编译出错;即使把这m_gridctrl->m_myrow=0删除,问题依然存在。
希望大家能帮我解决这个问题,谢谢~~
[/Quote]

你的控件创建代码是怎样的?
雪影 2009-08-27
  • 打赏
  • 举报
回复
问题多多啊,还是把相关代码贴出来。
老A四十二号 2009-08-27
  • 打赏
  • 举报
回复
assertion failed 一般是指针的问题,另外你也要保证你的m_myrow变量在引用的文件里是可见的,否则就会编译错误。

把你编译的错误信息贴出来吧
dulilihui 2009-08-27
  • 打赏
  • 举报
回复
我是一个mfc的菜鸟,搞了一天,这个问题还没解决~希望大家能够帮小弟一把,磕头感谢啊~~

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧