资产重组企业所得税:求助,用C++编程(用mfc和定时器)

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 07:38:15
要求编写一个能够在窗口动态显示矩形和圆的程序!
哪位高手肯帮帮偶啊!
我初学c++,菜鸟一个
弄了2天还没弄出来.
求助!!!!!!!!!!!!!!!!!!

/************************************************************************/
/* 请把这段程序保存成 a.cpp
/************************************************************************/

#include <afxwin.h>
class CAFrame:public CFrameWnd
{
public:
CDC *m_pMemDC;
CBitmap *m_pMemBMP;
BOOL m_bInitated;
int m_t;

public:
CAFrame();
~CAFrame();
afx_msg void OnCreate();
afx_msg void OnTimer(UINT i);
DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(CAFrame, CFrameWnd)
ON_WM_CREATE()
ON_WM_TIMER()
END_MESSAGE_MAP()

CAFrame::CAFrame()
{
m_pMemDC=new CDC;
m_pMemBMP=new CBitmap;
m_bInitated=FALSE;
m_t=0;
Create(NULL,"GAME",WS_OVERLAPPEDWINDOW, rectDefault);
}

CAFrame::~CAFrame()
{
delete m_pMemDC;
delete m_pMemBMP;
}

void CAFrame::OnCreate()
{
CDC *pDC=GetDC();
m_pMemBMP->CreateCompatibleBitmap(pDC,600,450);
m_pMemDC->CreateCompatibleDC(pDC);
m_pMemDC->SelectObject(m_pMemBMP);
SetTimer(20,20,NULL);
SetWindowPos(NULL, 0,0, 600,450,NULL);
CenterWindow();
}

void CAFrame::OnTimer(UINT i)
{
CDC *pDC=GetDC();
m_t=((int)(m_t+5))%300;
m_pMemDC->FillRect(CRect(0,0,600,450),&CBrush(RGB(255,255,255)));
m_pMemDC->Arc(m_t,m_t,m_t+200,m_t+200,10,10,100,100);
m_pMemDC->FillRect(CRect(600-m_t,m_t,500-m_t,m_t+100),&CBrush(RGB(140,100,50)));
pDC->BitBlt(0,0,600,450,m_pMemDC,0,0,SRCCOPY);
ReleaseDC(pDC);
}

class CAApp:public CWinApp
{
public:
BOOL InitInstance();
};

CAApp theApp;

BOOL CAApp::InitInstance()
{
m_pMainWnd=new CAFrame;
m_pMainWnd->ShowWindow(SW_SHOW);
return TRUE;
}

/************************************************************************/
/* 请用下面的命令行编译:
/* cl /MDd /D "_AFXDLL" /c a.cpp
/* link /subsystem:windows a.obj
/* 此时生成执行文件 a.exe 可以执行
/************************************************************************/

用定时器做都没必要开线程,只是每一次处理的时候都要清除上一次的操作
CClientDC类定义画笔,风格自己选,矩形是Rectangle()圆是Circle()
注意坐标的变换就可以了

动态的
我还不会
显示到可以

先画一个图形,然后定时用相同图形用背景覆盖,然后再做下一个。