麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(79)新建点文件之文件模块代码实现

前文《VC++开发GIS系统(78)新建点文件之导出新建点文件对话框》中导出了新建点文件的对话框,并且获取了文件名。本文将继续前文的工作,实现文件模块的操作。

_malaIO.h

在CProjectIO类中增加下面3个函数:

bool newPointFile(vector<malaTree>&paraTree, CString pointFileName);//新建点文件
bool writeAllNode(vector<malaTree>&paraTree);//更新整个节点树
bool writeHeader(CString fPath,CString fHeader);//写入文件头

_malaIO.cpp

上面的函数实现如下:

//新建点文件
bool CProjectIO::newPointFile(vector<malaTree>&paraTree, 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>&paraTree)
{
    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&paraTree,也就是目录树写入文件,这里没用使用替换的写入方法,为了简便,直接覆盖写入整个目录树,以实现更新的目的。

//写入文件头
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

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)