WEB开发网
开发学院软件开发VC Visual C++中对象的序列化与文件I/O研究 阅读

Visual C++中对象的序列化与文件I/O研究

 2008-11-13 19:32:36 来源:WEB开发网   
核心提示: // 将VarA、VarB存储到档案中CArchive ar (&file, CArchive::store);ar << VarA << VarB;……// 从档案装载VarA、VarBCArchive ar (&file, CArch

// 将VarA、VarB存储到档案中
CArchive ar (&file, CArchive::store);
ar << VarA << VarB;
……
// 从档案装载VarA、VarB
CArchive ar (&file, CArchive::load)
ar >> VarA >> VarB;

CArchive类仅包含有一个数据成员m__pDocument。在执行菜单上的打开或保存命令时,程序框架将会把该数据成员设置为要被序列化的文档。另外需要特别注意的是:在使用CArchive类时,要保证对CArchive对象的操作与文件访问权限的统一。

在本文下面将要给出的示例程序中,将对绘制连线所需要的关键点坐标和坐标个数等持久性对象进行序列化。其中文档类的成员变量m_nCount和m_ptPosition[100]分别记录了当前点的个数和坐标,初始值为0。当鼠标点击客户区时将对点的个数进行累加,并保存当前点的坐标位置。随后通过Invalidate()函数发出WM_PAINT消息通知窗口对客户区进行重绘,在重绘代码中对这些点击过的点进行绘图连线:

void CSample04View::OnLButtonDown(UINT nFlags, CPoint point)
{
 // 获取指向文档类的指针
 CSample04Doc* pDoc = GetDocument();
 // 保存当前鼠标点击位置
 pDoc->m_ptPosition[pDoc->m_nCount] = point;
 if (pDoc->m_nCount < 100)
  pDoc->m_nCount++;
 // 刷新屏幕
 Invalidate();
 CView::OnLButtonDown(nFlags, point);
}
……
void CSample04View::OnDraw(CDC* pDC)
{
 CSample04Doc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // 对点击的点进行连线绘图
 pDC->MoveTo(pDoc->m_ptPosition[0]);
 for (int i = 1; i < pDoc->m_nCount; i++)
  pDC->LineTo(pDoc->m_ptPosition[i]);
}

上一页  1 2 3 4 5 6 7  下一页

Tags:Visual 对象 序列化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接