以这段程序为例#include<afxwin.h>
#include<afxext.h>
class CMainApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWnd:public CFrameWnd
{
public:
void Draw(CDC* pDC);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP();
};
BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CMainWnd::Draw(CDC *pDC)
{
POINT p[20];
p[0].x=20;
p[0].y=20;
int i;
for(i=1;i<20;i++)
{
p[i].x=p[i-1].x+10;
p[i].y=20;
}
for(i=0;i<15;i++)
{
CPen pen;
pen.CreatePen(PS_INSIDEFRAME,1,RGB(255,0,0));
pDC->SelectObject(&pen);
CBrush cbrush;
cbrush.CreateSolidBrush(RGB(255,0,0));
pDC->SelectObject(&cbrush);
pDC->Ellipse(p[i].x-5,p[i].y-5,p[i].x+5,p[i].y+5);
} }
void CMainWnd::OnPaint()
{
CPaintDC dc(this);
Draw(&dc);
CFrameWnd::OnPaint();
}
BOOL CMainApp::InitInstance()
{
CMainWnd *pFrame=new CMainWnd;
pFrame->Create(0," ",WS_OVERLAPPEDWINDOW,CRect(0,0,500,500));
this->m_pMainWnd=pFrame;
pFrame->ShowWindow(m_nCmdShow);
pFrame->UpdateWindow();
return TRUE;
}
CMainApp MyApp;
以上程序中画了若干个圆,我想让这些圆动态显示出来,就是可以让人观察到圆一个接一个出现的过程,这该怎么处理?
#include<afxext.h>
class CMainApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWnd:public CFrameWnd
{
public:
void Draw(CDC* pDC);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP();
};
BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CMainWnd::Draw(CDC *pDC)
{
POINT p[20];
p[0].x=20;
p[0].y=20;
int i;
for(i=1;i<20;i++)
{
p[i].x=p[i-1].x+10;
p[i].y=20;
}
for(i=0;i<15;i++)
{
CPen pen;
pen.CreatePen(PS_INSIDEFRAME,1,RGB(255,0,0));
pDC->SelectObject(&pen);
CBrush cbrush;
cbrush.CreateSolidBrush(RGB(255,0,0));
pDC->SelectObject(&cbrush);
pDC->Ellipse(p[i].x-5,p[i].y-5,p[i].x+5,p[i].y+5);
} }
void CMainWnd::OnPaint()
{
CPaintDC dc(this);
Draw(&dc);
CFrameWnd::OnPaint();
}
BOOL CMainApp::InitInstance()
{
CMainWnd *pFrame=new CMainWnd;
pFrame->Create(0," ",WS_OVERLAPPEDWINDOW,CRect(0,0,500,500));
this->m_pMainWnd=pFrame;
pFrame->ShowWindow(m_nCmdShow);
pFrame->UpdateWindow();
return TRUE;
}
CMainApp MyApp;
以上程序中画了若干个圆,我想让这些圆动态显示出来,就是可以让人观察到圆一个接一个出现的过程,这该怎么处理?
也就是说每一帧执行一次pDC->Ellipse(p[i].x-5,p[i].y-5,p[i].x+5,p[i].y+5);
做一个定时器。
ptcenter.y
r将以上3个值定义为全局变量,或类的变量增加定时器在定时器中修改这3个值,就可以逐步显示了,如果需要在ONDRAW中一起显示则在每个圆的绘制完成后sleep(1000);也可以。