VC++开发GIS系统(79)新建点文件之文件模块代码实现
发布时间: 2015-12-27
所属分类: VC++开发GIS系统
前文《VC++开发GIS系统(78)新建点文件之导出新建点文件对话框》中导出了新建点文件的对话框,并且获取了文件名。本文将继续前文的工作,实现文件模块的操作。
_malaIO.h
在CProjectIO类中增加下面3个函数:
bool newPointFile(vector<malaTree>¶Tree, CString pointFileName);//新建点文件
bool writeAllNode(vector<malaTree>¶Tree);//更新整个节点树
bool writeHeader(CString fPath,CString fHeader);//写入文件头
_malaIO.cpp
上面的函数实现如下:
//新建点文件
bool CProjectIO::newPointFile(vector<malaTree>¶Tree, CString pointFileName)
{
if (writeAllNode(paraTree))
{
if (writeHeader(pointFileName, L"mpt"))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
这个函数的作用是新建点文件,主要调用了writeAllNode和writeHeader两个函数。实现如下:
//更新整个节点树
bool CProjectIO::writeAllNode(vector<malaTree>¶Tree)
{
if (paraTree.size()>0)
{
CFile file;
file.Open(LPCTSTR(mPrjPath), CFile::modeCreate | CFile::modeWrite);
CArchive ar(&file, CArchive::store);
//ar << pNode.itemnode << pNode.isOpen << pNode.isActive << pNode.filePath << pNode.fileType;
for (int i = 0; i < paraTree.size(); i++)
{
try
{
malaTree pNode = paraTree[i];
ar << pNode.itemnode << pNode.isOpen << pNode.isActive << pNode.filePath << pNode.fileType;
}
catch (CException* e)
{
return false;
}
}
ar.Close();
file.Close();
return true;
}
else
{
return false;
}
}
这个函数的作用是将传入的vector
//写入文件头
bool CProjectIO::writeHeader(CString fPath, CString fHeader)
{
CFile file;
file.Open(LPCTSTR(fPath), CFile::modeCreate | CFile::modeWrite);
CArchive ar(&file, CArchive::store);
try
{
ar << fHeader;
}
catch (CException* e)
{
return false;
}
ar.Close();
file.Close();
return true;
}
这个函数的作用是写一个简单的文件头,主要用来打开文件的时候,判断文件的类型。
详细代码可以参考:GitHub
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子