我做了一个SDI程序(单文档多视图),程序中我一共创建了2个视图。我在其中一个视图中创建了一个定时器,我的目的是实现图像的时时刷新,每隔2秒,程序查一下数据库,根据数据库中的数据来更新视图。但不知道为什么,程序一运行就死掉了,请高手替我解答,谢谢!!在线等!!!
我在OnTimer()中调用OnDraw()函数
void CEmulateView::OnDraw(CDC* pDC)
{
CManageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); DrawBkgndBim(pDC);//画背景 CBrush brush,*pOldbrush;
pDC->SelectStockObject(NULL_PEN); brush.CreateSolidBrush(RGB(255,247,47));
pOldbrush = pDC->SelectObject(&brush); CTb_Rect db_rect; //数据库类对象
db_rect.Open();
db_rect.MoveFirst();
while(!db_rect.IsEOF())
{
if (db_rect.m_y_n == 1) //db_rect.m_y_n取值:0或者1
pDC->SelectStockObject(NULL_BRUSH);
pDC->Rectangle(db_rect.m_x_1,db_rect.m_y_1,db_rect.m_x_2,db_rect.m_y_2);
}
pDC->SelectObject(pOldbrush);
}
我在OnTimer()中调用OnDraw()函数
void CEmulateView::OnDraw(CDC* pDC)
{
CManageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); DrawBkgndBim(pDC);//画背景 CBrush brush,*pOldbrush;
pDC->SelectStockObject(NULL_PEN); brush.CreateSolidBrush(RGB(255,247,47));
pOldbrush = pDC->SelectObject(&brush); CTb_Rect db_rect; //数据库类对象
db_rect.Open();
db_rect.MoveFirst();
while(!db_rect.IsEOF())
{
if (db_rect.m_y_n == 1) //db_rect.m_y_n取值:0或者1
pDC->SelectStockObject(NULL_BRUSH);
pDC->Rectangle(db_rect.m_x_1,db_rect.m_y_1,db_rect.m_x_2,db_rect.m_y_2);
}
pDC->SelectObject(pOldbrush);
}
而且你打开以后也没关。
{
if (db_rect.m_y_n == 1) //db_rect.m_y_n取值:0或者1
pDC->SelectStockObject(NULL_BRUSH);
pDC->Rectangle(db_rect.m_x_1,db_rect.m_y_1,db_rect.m_x_2,db_rect.m_y_2);
}
好象是死循环吧!
改一下:
while(!db_rect.IsEOF())
{
if (db_rect.m_y_n == 1) //db_rect.m_y_n取值:0或者1
pDC->SelectStockObject(NULL_BRUSH);
pDC->Rectangle(db_rect.m_x_1,db_rect.m_y_1,db_rect.m_x_2,db_rect.m_y_2);
db_rect.MoveNext();
}