为什么会这样啊? 一个很简单的程序,我就是贴一个小球,然后做运动,刚开始一切正常,但是过了15秒左右,就回静止,然后移动整个窗口,回出现叠影.怎么回这样啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那应该调用什么函数啊?而且连我的window的右击的popmenu回出现错误,怎么会影响我系统的程序我用的是clientdc,不可能和系统有联系啊 内存泄多了就这样了。把系统的GDI对象都弄丢了。 //CMainFrameCMainFrame::CMainFrame(){ CString strWndClass=AfxRegisterWndClass( CS_DBLCLKS, AfxGetApp()->LoadStandardCursor(IDC_ARROW), (HBRUSH)(COLOR_3DFACE+0), AfxGetApp()->LoadStandardIcon(IDI_WINLOGO) );CreateEx(0,strWndClass,_T("BALLMOVEMENT"),WS_OVERLAPPED|WS_SYSMENU|WS_CAPTION|WS_MINIMIZEBOX, 0,0,500,600,NULL,NULL); // TODO: add member initialization code here }CMainFrame::~CMainFrame(){}//afx_msg void CMainFrame::OnPaint()//{for(int i=0;i<1;i++)//pball->CurveMovement();//pball->DrawBall(230,232);//} afx_msg void CMainFrame::OnTimer(UINT nIDEvent){pball->CurveMovement();pball1->CurveMovement();pball2->CurveMovement();CFrameWnd::OnTimer(nIDEvent);} int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {if(CFrameWnd::OnCreate(lpCreateStruct)==-1) return -1; if(!SetTimer(1,2,NULL)){ MessageBox(_T("edfdf")); return -1;} pball=new CBall(3,3,1,1); pball1=new CBall(4,4,200,34); pball2=new CBall(2,2,43,345); return 0; }//ball.cppCBall::CBall(int spx,int spy,int x1,int y1){ speedx=spx; speedy=spy; x=x1; y=y1; } void CBall::DrawBall(int xx,int yy){xx=x+speedx; yy=y+speedy; if(xx<=0) {xx=0; speedx=-speedx; } if(xx+32>=490) {xx=490-32; speedx=-speedx; } if(yy+32>=575) {yy=575-32; speedy=-speedy; } if(yy<=0) {yy=0; speedy=-speedy; } CWnd *pframe=AfxGetApp()->m_pMainWnd; CClientDC dc(pframe); CDC *mdc=new CDC; CBitmap *bitmap=new CBitmap; CBitmap *bitmap1=new CBitmap; bitmap->m_hObject=(HBITMAP)::LoadImage(NULL,"ball.bmp", IMAGE_BITMAP,32,32,LR_LOADFROMFILE); bitmap1->m_hObject=(HBITMAP)::LoadImage(NULL,"ball1.bmp", IMAGE_BITMAP,32,32,LR_LOADFROMFILE); //if(bitmap->m_hObject==NULL)// {dc.SetTextColor(RGB(0,0,255)); // dc.TextOut(30,60,"dsfdsfsdf"); //} mdc->CreateCompatibleDC(&dc); mdc->SelectObject(bitmap1);dc.BitBlt(x,y,32,32,mdc,0,0,SRCCOPY); mdc->SelectObject(bitmap); dc.BitBlt(xx,yy,32,32,mdc,0,0,SRCCOPY); this->x=xx; this->y=yy;} void CBall::CurveMovement() { DrawBall(x,y); }帮忙看一看 也许是存放小求位置的变量没有更新,重载onupdate() mdc没有释放。造成内存泄漏。还有Select新的Object后一定记得还原为原来的Object。bitmap#没有释放如果使用指针,一定记得释放阿改后看看吧! COMBOBOXEXITEM结构 求助:dat文件中的二进制数据怎样转换成16进制数据输出显示 如何美化进度条/ 到这里程序不能执行了 有谁能告诉我这是什么意思吗? 小问题,在线等。有关消息问题 如何编程实现铁路线,国界线等样式的线型!! ExitWindowsEx(EWX_SHUTDOWN,0)关机并关闭电源的问题。 谁有vc的画一个球的代码:高分求购 关于类之间成员变量的传递问题,我是小白~~ 我的电脑中标!系统崩溃!郁闷呀!!!!散100分!!!! 用VC如何实现局域网里的共享文件读写,双方的操作系统为WIN2000:
而且连我的window的右击的popmenu回出现错误,怎么会影响我系统的程序
我用的是clientdc,不可能和系统有联系啊
CMainFrame::CMainFrame()
{ CString strWndClass=AfxRegisterWndClass(
CS_DBLCLKS,
AfxGetApp()->LoadStandardCursor(IDC_ARROW),
(HBRUSH)(COLOR_3DFACE+0),
AfxGetApp()->LoadStandardIcon(IDI_WINLOGO)
);
CreateEx(0,strWndClass,_T("BALLMOVEMENT"),WS_OVERLAPPED|WS_SYSMENU|WS_CAPTION|WS_MINIMIZEBOX,
0,0,500,600,NULL,NULL);
// TODO: add member initialization code here
}CMainFrame::~CMainFrame()
{
}//afx_msg void CMainFrame::OnPaint()
//{for(int i=0;i<1;i++)
//pball->CurveMovement();
//pball->DrawBall(230,232);
//}
afx_msg void CMainFrame::OnTimer(UINT nIDEvent)
{
pball->CurveMovement();
pball1->CurveMovement();
pball2->CurveMovement();
CFrameWnd::OnTimer(nIDEvent);
} int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(CFrameWnd::OnCreate(lpCreateStruct)==-1)
return -1;
if(!SetTimer(1,2,NULL)){
MessageBox(_T("edfdf"));
return -1;
}
pball=new CBall(3,3,1,1);
pball1=new CBall(4,4,200,34);
pball2=new CBall(2,2,43,345);
return 0;
}
//ball.cpp
CBall::CBall(int spx,int spy,int x1,int y1)
{ speedx=spx;
speedy=spy;
x=x1;
y=y1;
} void CBall::DrawBall(int xx,int yy)
{xx=x+speedx;
yy=y+speedy;
if(xx<=0)
{xx=0;
speedx=-speedx;
}
if(xx+32>=490)
{xx=490-32;
speedx=-speedx;
}
if(yy+32>=575)
{yy=575-32;
speedy=-speedy;
}
if(yy<=0)
{yy=0;
speedy=-speedy;
}
CWnd *pframe=AfxGetApp()->m_pMainWnd;
CClientDC dc(pframe);
CDC *mdc=new CDC;
CBitmap *bitmap=new CBitmap;
CBitmap *bitmap1=new CBitmap;
bitmap->m_hObject=(HBITMAP)::LoadImage(NULL,"ball.bmp",
IMAGE_BITMAP,32,32,LR_LOADFROMFILE);
bitmap1->m_hObject=(HBITMAP)::LoadImage(NULL,"ball1.bmp",
IMAGE_BITMAP,32,32,LR_LOADFROMFILE);
//if(bitmap->m_hObject==NULL)
// {dc.SetTextColor(RGB(0,0,255));
// dc.TextOut(30,60,"dsfdsfsdf");
//}
mdc->CreateCompatibleDC(&dc);
mdc->SelectObject(bitmap1);
dc.BitBlt(x,y,32,32,mdc,0,0,SRCCOPY);
mdc->SelectObject(bitmap);
dc.BitBlt(xx,yy,32,32,mdc,0,0,SRCCOPY);
this->x=xx;
this->y=yy;}
void CBall::CurveMovement()
{
DrawBall(x,y);
}帮忙看一看
还有Select新的Object后一定记得还原为原来的Object。bitmap#没有释放
如果使用指针,一定记得释放阿改后看看吧!