VC6.0 调试时老是出现 User breakpoint called from code at 0x7c92120
VC6.0 调试时总是出现 User breakpoint called from code at 0x7c92120
在写一个画图程序,编译没有错,运行时报错User breakpoint called from code at 0x7c92120
调试输出为second chance assertion failed:file wingdi.cpp,line 1120;
下面是部分有问题代码:
首先我在定时器处理函数中实现两个变量的自增
(((CLJJCApp*)AfxGetApp())->m_CurrentRow)++;
(((CLJJCApp*)AfxGetApp())->m_nRow)++;
if((((CLJJCApp*)AfxGetApp())->m_nRow)>1000)
KillTimer(2);
下面是绘图函数
void CMyView::OnPaint()
{
CPaintDC dc(this); // device context for painting
dc.SetWindowOrg(m_nHScrollPos, m_nVScrollPos);
static int m_WrongRow[1000];//用来保存m_nRow的
static int i=0;
if(i<1000)
{ m_WrongRow[i]=(((CLJJCApp*)AfxGetApp())->m_nRow);
i++;
}
for(int j=2;j<m_TotalRows;j++) //根据j的值,与m_CurrentRow,m_nRow间的关系画出
{ //整个循环回路 不同颜色
int COLOR=0;
CPen* pOldPen=NULL;
CPen pen;
if(j==((CLJJCApp*)AfxGetApp())->m_CurrentRow)
{
COLOR=3;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen* pOldPen=dc.SelectObject(&pen);
}
else if(j>((CLJJCApp*)AfxGetApp())->m_CurrentRow)
{COLOR=4;
pen.CreatePen(PS_SOLID,1,RGB(255,255,255));
CPen* pOldPen=dc.SelectObject(&pen);
}
else if(j<((CLJJCApp*)AfxGetApp())->m_CurrentRow)
{
for(int a=2;a<i;a++)//出错的地方
if(j==m_WrongRow[a])
/*上面两行是出错的地方我想将当前的j和数组中保存的逐一比较只要和数组中的相同就画出红色,可是当我
用上面的循环时就会报错,如果我不用循环而是直接取出数组中的值例如将上面两句改为
if(j==m_WrongRow[9]||j==m_WrongRow[23])则会在9,和23行出画出红色图形*/
{
COLOR=2;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen* pOldPen=dc.SelectObject(&pen);
}
else
{
COLOR=1;
pen.CreatePen(PS_SOLID,1,RGB(0,255,0));
CPen* pOldPen=dc.SelectObject(&pen);
}
}....
绘图函数}
各位大神帮忙看一眼吧,谢谢了
------解决方案--------------------
file wingdi.cpp,line 1120;
打开 wingdi.cpp,找 1120;
BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
ASSERT(m_hObject == NULL);
//
其实 可以 在 for 里 单步 执行,看 那句 出问题了。
在写一个画图程序,编译没有错,运行时报错User breakpoint called from code at 0x7c92120
调试输出为second chance assertion failed:file wingdi.cpp,line 1120;
下面是部分有问题代码:
首先我在定时器处理函数中实现两个变量的自增
(((CLJJCApp*)AfxGetApp())->m_CurrentRow)++;
(((CLJJCApp*)AfxGetApp())->m_nRow)++;
if((((CLJJCApp*)AfxGetApp())->m_nRow)>1000)
KillTimer(2);
下面是绘图函数
void CMyView::OnPaint()
{
CPaintDC dc(this); // device context for painting
dc.SetWindowOrg(m_nHScrollPos, m_nVScrollPos);
static int m_WrongRow[1000];//用来保存m_nRow的
static int i=0;
if(i<1000)
{ m_WrongRow[i]=(((CLJJCApp*)AfxGetApp())->m_nRow);
i++;
}
for(int j=2;j<m_TotalRows;j++) //根据j的值,与m_CurrentRow,m_nRow间的关系画出
{ //整个循环回路 不同颜色
int COLOR=0;
CPen* pOldPen=NULL;
CPen pen;
if(j==((CLJJCApp*)AfxGetApp())->m_CurrentRow)
{
COLOR=3;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen* pOldPen=dc.SelectObject(&pen);
}
else if(j>((CLJJCApp*)AfxGetApp())->m_CurrentRow)
{COLOR=4;
pen.CreatePen(PS_SOLID,1,RGB(255,255,255));
CPen* pOldPen=dc.SelectObject(&pen);
}
else if(j<((CLJJCApp*)AfxGetApp())->m_CurrentRow)
{
for(int a=2;a<i;a++)//出错的地方
if(j==m_WrongRow[a])
/*上面两行是出错的地方我想将当前的j和数组中保存的逐一比较只要和数组中的相同就画出红色,可是当我
用上面的循环时就会报错,如果我不用循环而是直接取出数组中的值例如将上面两句改为
if(j==m_WrongRow[9]||j==m_WrongRow[23])则会在9,和23行出画出红色图形*/
{
COLOR=2;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen* pOldPen=dc.SelectObject(&pen);
}
else
{
COLOR=1;
pen.CreatePen(PS_SOLID,1,RGB(0,255,0));
CPen* pOldPen=dc.SelectObject(&pen);
}
}....
绘图函数}
各位大神帮忙看一眼吧,谢谢了
------解决方案--------------------
file wingdi.cpp,line 1120;
打开 wingdi.cpp,找 1120;
BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
ASSERT(m_hObject == NULL);
//
其实 可以 在 for 里 单步 执行,看 那句 出问题了。