MFC中计数及文件操作

①计数功能,鼠标左键每点击一下,面板上的数字加1,鼠标右键每点击一下,面板上的数字减1.

 

1.建立一个新的MFC项目,我这里取名为jishu 后来因为要涉及到数据的存储,即把面板上的内容存起来,这与文档类( CJishuDoc)有关,我们把显示的数字变量nCount定义在类CJishuDoc中。找到文件视图中的jishuDoc.h ,双击,在public:  里面定义成员变量 int nCount  然后找到类视图中的CJishuDoc()(构造函数),双击,用初始化表对nCount赋处置,这里设为1,如图。

 

 

2.找到CJishuView里面的OnDrsw(CDC *pDC),双击,在里面写如下代码;

CString strCount;
	strCount.Format("计数 %d",pDoc->nCount);
	pDC->TextOut(20,20,strCount);  //显示出来


 

这时候编译运行,界面上显示  计数1

 

 

 

3.接下来要实现左键加1,右键减1的功能,在类CJishuView中点击右键,Add Windows Message Handler,选左边的VM_LBUTTONDOWN(左键按下)和VM_LBUTTONDOWN,双击,OK。接下来对它们添加代码,点击CJishuView中的CJishuView(),出现代码界面,向下拉,可以看到void CJishuView::OnLButtonDown(UINT nFlags, CPoint point)

void CJishuView::OnRButtonDown(UINT nFlags, CPoint point),先对前者写代码。nCount是在文档类中定义的,要在视图类中使用它,涉及到了跨类使用,要使用文档类的指针(下面的*pDoc

CJishuDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	++pDoc->nCount;
	Invalidate();//刷新


 

这样左键的功能就做好了。在void CJishuView::OnRButtonDown(UINT nFlags, CPoint point)中添加代码

CJishuDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	--pDoc->nCount;
	Invalidate();


 

右键的功能也做好了。

4.编译,运行,点击左键,右键,功能实现。

 

②文件操作

1.写入和读入数据(nCount

找到类视图中的CJishuDoc,双击里面的CJishuDoc(),出现代码界面,在里面找到void CJishuDoc::Serialize(CArchive& ar)  序列化函数。

写入下面代码:

if (ar.IsStoring())
	{
		ar<<nCount;  //写入。点击窗口界面上的保存,就把当前显示的nCount的值保存在文件中
		// TODO: add storing code here
	}
	else
	{
		ar>>nCount;  //读入。点击打开,从文件中读入存储的数据,并在屏幕上显示
		// TODO: add loading code here
	}


2.点击窗口界面的新建时,实现对nCount 0

在刚才的代码界面中找到BOOL CJishuDoc::OnNewDocument() 在里面写代码  nCount=0;功能实现。

3.关闭窗口时,出现提醒,是否保存当前的数据(nCount

CJishuView里面找到void CJishuView::OnLButtonDown(UINT nFlags, CPoint point),在里面写如下代码:

pDoc->SetModifiedFlag();      //写在右键函数里也行

 

 

 

posted @ 2013-07-19 19:34  同学少年  阅读(294)  评论(0编辑  收藏  举报