为什么这段代码运行后,程序会死掉?
我在视图类中定义了一个响应菜单命令的函数,目的是要画一个不断变大的矩形,并且在函数的执行过程中,程序要能继续响应操作。代码如下(很多其他的功能我已经简化、或删除掉了):
void CTTView::OnStartRun()
{
CDC* pDC ;
pDC = this->GetDC();
CBrush brush( RGB(125,135,135) );
CBrush* OldBrush = pDC->SelectObject( &brush );
int j = 5000000;//做延时用
for( int i = 0; i <= 100; i++ )
{
//使程序能继续响应外部事件
if( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE ) )
{
::TranslateMessage( &msg );
::DispatchMessage( &msg );
}
//画矩形(x1, y1, x2, y2已经在程序的其他地方定义)
pDC->Rectangle( x1, y1, x2, y2 );
x2 += 1;
y2 += 1;
while( j-- );//延时
j = 5000000;
}
pDC->SelectObject( OldBrush );
this->ReleaseDC( pDC );///!!!!!!!这行代码好象有问题。
}
程序运行起来后,我点击这个菜单命令,在这个函数运行到一半还未结束的时候,执行关闭程序的操作,则系统弹出一个异常错误对话框。当我去掉this->ReleaseDC( pDC )(函数中的最后一行代码)这句代码后,则程序就不发生错误了。
在下不知道到底是什么原因,导致这个严重的错误,希望各位兄弟指教。