cf手游otg鼠标键盘玩:MFC中保存窗口内容

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 13:39:04
我刚刚接触MFC几天,现在模拟画图编的一个小程序有这个问题:我不会保存窗口内容,当其他窗口覆盖在上面,或者本身最大化,最小化后,之前窗口中画的东西全没了。 请问怎么弄才能在恢复窗口的时候重现之前上面的内容?谢谢

把画的内容记录到数据结构中,在OnDraw函数中画出来,因为每次每次刷新窗口后都要执行这个函数

要想永久记录可以用文档的序列化函数,相当于自定义的文件类型,当然要先在Doc类中设计好自己的数据结构.

什么是MFC?

这个说不清楚,我想给你帖个图上去又不方便,给你举个例子好了:

新建一个工程(project),
选MFC AppWizard[EXE],
输入工程名字和保存的目录,然后按OK,
然后选Simple Document,再按完成(finish),
(因为设置是默认的,需要修改就按下一步(next)慢慢设置,其实不需要),
再按一次完成(OK)
找到ondraw函数后输入下面的代码(粘贴上去就可以了):
//代码的开始:
// TODO: add draw code for native data here
pDC->TextOut(40,40,"计算机0302班 24号 戴海港");

CBrush brush1(RGB(180,150,50));
CBrush *pBrush1=pDC->SelectObject(&brush1);
/*CPen mypen1(PS_SOLID,5,RGB(0,0,255));
CPen *pOldPen=pDC->SelectObject(&mypen1);
pDC->SelectObject(pOldPen);*/

pDC->Rectangle(20,100,1000,625);//大的框架

CPen mypen(PS_SOLID,5,RGB(255,255,255));
CPen *pOldPen=pDC->SelectObject(&mypen);//设置新的画笔
pDC->Ellipse(447,300,573,425);//中心圆形
pDC->MoveTo(510,100);
pDC->LineTo(510,625);//中线
//pDC->SelectObject(pOldPen);//取消画笔(恢复原来的画笔)
pDC->Arc(-246,125,286,600,20,600,20,125);//三分线
pDC->Ellipse(160,300,286,425);//弧顶
pDC->MoveTo(223,300);
pDC->LineTo(223,425);//罚球线
pDC->MoveTo(223,300);
pDC->LineTo(20,257.5);
pDC->MoveTo(223,425);
pDC->LineTo(20,467.5);//梯形
//以上是左边
pDC->Arc(734,125,1266,600,1000,125,1000,600);//三分线
pDC->Ellipse(734,300,860,425);//弧顶
pDC->MoveTo(797,300);
pDC->LineTo(797,425);//罚球线
pDC->MoveTo(797,300);
pDC->LineTo(1000,257.5);
pDC->MoveTo(797,425);
pDC->LineTo(1000,467.5);
/*CPen mypen(PS_SOLID,10,RGB(200,100,100)),*pOldpen;
pDC->SelectObject(&mypen);
pDC->MoveTo(100,100);
pDC->LineTo(300,100);
pDC->SelectObject(pOldpen);
pDC->LineTo(300,300);*/

//代码结束
由于有强制类型转换,编译的时候会有4个警告,不用去管它,没有关系的
执行后,你可以看到画的是一个篮球场地
如何做到最大化不丢画面的,你自己看看我的注解就知道了,
常用的几个函数都给你介绍了,以及输入文字的函数都给你了,
这是最简单的一个例子了,相信,你一定可以做得比这个要好
加油吧,呵呵……