Visual C++中对象的序列化与文件I/O研究
2008-11-13 19:32:36 来源:WEB开发网// 将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]);
}
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››Visual C++优化对大型数据集合的并发访问
- ››VISUAL C++中的OCX控件的使用方法
- ››Visual C++实现视频图像处理技术
- ››Visual C++制作一个Sniffer实例
更多精彩
赞助商链接