mfc程序调试问题
ssy.exe 中的 0x78a5b4d9 (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0xfefeff66 时发生访问冲突。ssy为我的文件名。
错误位置:
if (!pThread->InitInstance())
{
if (pThread->m_pMainWnd != NULL)
{
TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd\n");
pThread->m_pMainWnd->DestroyWindow();
}
nReturnCode = pThread->ExitInstance();
goto InitFailure;
}
nReturnCode = pThread->Run();
InitFailure:
程序源代码:
CBitmap bmp;
CRect rc;
CPaintDC dc2(GetDlgItem(IDC_STATIC1));
GetDlgItem(IDC_STATIC1)->GetClientRect(rc);
CWnd *pwnd=GetDlgItem(IDC_PIC);
CRect rc;
pwnd->GetClientRect(&rc);
bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
CDC memDC;
memDC.CreateCompatibleDC(&dc);
memDC.SelectObject(&bmp);
CPen pen;
pen.CreatePen(PS_SOLID,2,RGB(0,0,255));
CPen *oldpen=(CPen*)memDC.SelectObject(&pen);
int x1=300,y1=300,x2=500,y2=500;
memDC.Ellipse(x1,y1,x2,y2);
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,0));
CBrush *oldbrush=(CBrush *)memDC.SelectObject(&brush);
int num11,num22;
num11=(int)num1;
num22=(int)num2;
int xx,yy;
xx=num11-20;
yy=num22-20;
memDC.Ellipse (num11,num22,xx,yy);
memDC.ExtFloodFill(num11,num22,RGB(255,0,0),RGB(255,0,0));
brush.DeleteObject();
dc.BitBlt(0,0,rc.Width(),rc.Height(),&memDC,0,0,SRCCOPY);
memDC.SelectObject(oldpen);
memDC.SelectObject(oldbrush);
bmp.DeleteObject();
memDC.DeleteDC();
写在onpaint下的,其中num1,num2是与编辑框控件相关联的变量。
[最优解释]
Debug下,打开call stack窗口,看运行到哪个函数抛出异常。。。
[其他解释]
把断点下到InitInstance里
一步一步执行
[其他解释]
DS_FIXEDSYS
[其他解释]
debug没办法定位么?
[其他解释]
执行之后就在winmain中显示这个警告了,在编写的文件中没有定位
[其他解释]
是不是一运行就出错?
[其他解释]
对的,生成的时候没有错误,一按调试就弹出对话框显示上面的错误了
[其他解释]
现在又出现新的问题了,在我没改过代码的情况下,出现了新的问题:1>.\ssy.rc(91) : error RC2135 : file not found: 0
DIALOGEX 0, 0, 339, 245//错误指向这一行
STYLE DS_SETFONT
[其他解释]
WS_MINIMIZEBOX
[其他解释]
WS_MAXIMIZEBOX
[其他解释]
WS_POPUP