首先建立了类CMap,该类主要实现用户每一步的操作和画图显示功能,记录的时候只须记录每组盘子的个数和盘子的矩形。代码和注释如下:
解决方案 »
- 如果其他类中要用到Dlg对话框类中的IDC_EDIT等要怎么办?
- 求教利用StretchBlt函数实现图像缩放的功能
- 求书: Programming Linux Hacker Tools Uncovered: Exploits, Backdoors, Scanners, Sniffers, Brute-Forcers, Rootkits
- 为什么新加一个atl对像后,regsvr32会失败
- 成员变量类型区别
- 请教地图方面的问题?? 急
- 感谢chenhq(chenhq) 。近来接分
- 十万火急!!!有关于在多文档程序中的多页打印自己画的十个表
- 问题:RPM后缀的文件用什么工具打开?(急:200分)
- 我的程序主框架,可以运行起来,但在new或open一个文档时报runtime error!,但在我自己的机器上是好的,别人的机器上发生上述问题!
- VC中使用namespace的问题error C2871: 'std' : does not exist or is not a namespace
- fatal error C1189:
class CMap
{
public:
//每组盘子的个数
int iCount[3];
//3组盘子里面,每个盘子的位置,用矩形表示
RECT *Rect[3];
//构造函数
CMap()
{
//三组盘子,每组盘子的矩形
for(int i=0;i<3;i++)
Rect[i]=new RECT[NUM];
//初始化每组盘子的个数
iCount[0]=NUM;
iCount[1]=0;
iCount[2]=0;
//第一组盘子的矩形的位置
for(i=0;i<NUM;i++)
{
Rect[0][i].left=Center[0]-(NUM-i)*Dx2;
Rect[0][i].right=Center[0]+(NUM-i)*Dx2;
Rect[0][i].bottom=(NUM+1-i)*Dx;
Rect[0][i].top=(NUM-i)*Dx;
}
//第二组盘子的矩形初始化为空
for(i=0;i<NUM;i++)
{
Rect[1][i].left=0;
Rect[1][i].right=0;
Rect[1][i].bottom=0;
Rect[1][i].top=0;
}
//第三组盘子的矩形初始化为空
for(i=0;i<NUM;i++)
{
Rect[2][i].left=0;
Rect[2][i].right=0;
Rect[2][i].bottom=0;
Rect[2][i].top=0;
}
}
CMap operator=(CMap Other)
{
//对新的CMap对象,应该重新分配内存
for(int i=0;i<3;i++)
Rect[i]=new RECT[NUM];
//依次赋值
for(i=0;i<3;i++)
{
iCount[i]=Other.iCount[i];
for(int j=0;j<NUM;j++)
Rect[i][j]=Other.Rect[i][j];
}
//返回
return *(this);
}
//画图,显示盘子的情况
void OnDraw(HDC hdc)
{
//画出每个盘子
for(int i=0;i<3;i++)
for(int j=0;j<iCount[i];j++)
Rectangle(hdc,
Rect[i][j].left,
Rect[i][j].top,
Rect[i][j].right,
Rect[i][j].bottom);
}
//析构函数