[讨论]一个非常奇怪的编程问题
<P>一个非常奇怪的编程问题<BR>程序一可以正常显示图形,程序二不能显示图形,程序三又可以正常显示图形了,(三个程序均不存在编译和运行问题)这到底是为什么?百思不得其解,请高手执教。叩谢!<BR>class CMemBitmapView : public CView<BR>{<BR>public:<BR> CDC *PDC; //创建屏幕绘图设备指针<BR> CDC memDC; //创建内存绘图设备<BR> CBitmap memBitmap; //创建内存位图<BR> CBitmap* pOldBmp; //创建原始位图指针<BR> CRect rect; //创建矩形,用于保存屏幕窗口坐标<BR>public:<BR> afx_msg void OnHuitu();<BR>public:<BR> afx_msg void OnTimer(UINT_PTR nIDEvent);<BR>};</P><P>程序一<BR>void CMemBitmapView::OnHuitu()<BR>{<BR> rect.left=0;<BR> rect.top=0;<BR> rect.right=1024;<BR> rect.bottom=768;<BR> PDC=this->GetDC();<BR> memDC.CreateCompatibleDC(PDC); <BR> memBitmap.CreateCompatibleBitmap(PDC,rect.right,rect.bottom);<BR> pOldBmp = memDC.SelectObject(&memBitmap);<BR> memDC.FillSolidRect(rect,RGB(255,255,255));<BR> memDC.Ellipse(300,150,650,500);<BR> PDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY);<BR>}<BR>程序二<BR>void CMemBitmapView::OnHuitu()<BR>{<BR> rect.left=0;<BR> rect.top=0;<BR> rect.right=1024;<BR> rect.bottom=768;<BR> PDC=this->GetDC();<BR> memDC.CreateCompatibleDC(PDC); <BR> memBitmap.CreateCompatibleBitmap(PDC,rect.right,rect.bottom);<BR> pOldBmp = memDC.SelectObject(&memBitmap);<BR> memDC.FillSolidRect(rect,RGB(255,255,255));<BR> CMemBitmapView::SetTimer(1,100,NULL);<BR>}<BR>void CMemBitmapView::OnTimer(UINT_PTR nIDEvent)<BR>{<BR> memDC.Ellipse(300,150,650,500);<BR> PDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY);<BR> CView::OnTimer(nIDEvent);<BR>}<BR>程序三<BR>void CMemBitmapView::OnHuitu()<BR>{<BR> rect.left=0;<BR> rect.top=0;<BR> rect.right=1024;<BR> rect.bottom=768;<BR> PDC=this->GetDC();<BR> memDC.CreateCompatibleDC(PDC); <BR> memBitmap.CreateCompatibleBitmap(PDC,rect.right,rect.bottom);<BR> pOldBmp = memDC.SelectObject(&memBitmap);<BR> memDC.FillSolidRect(rect,RGB(255,255,255));<BR> CMemBitmapView::SetTimer(1,100,NULL);<BR>}<BR>void CMemBitmapView::OnTimer(UINT_PTR nIDEvent)<BR>{<BR> PDC=this->GetDC();<BR> memDC.Ellipse(300,150,650,500);<BR> PDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY);<BR> CView::OnTimer(nIDEvent);<BR>}<BR></P> <P>发错地方了吧.</P>
页:
[1]
