麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(104)载入文件之功能实现

前文《VC++开发GIS系统(103)载入文件之对话框的导出》已经导出了载入文件的交互对话框,下面的工作就是要实现载入文件的详细功能了。步骤如下:

1. 响应载入文件菜单

参考文章《VC++开发GIS系统(71)响应CTreeCtrl右键菜单的函数》的方法,实现载入文件函数的响应。

2. 实现载入文件

代码如下

//载入文件
void CPrjManage::OnGraphFileOpen()
{
    //先判断有没打开工程
    if (mBasePath != L"")
    {
        malaTree tmpTree;
        if (dlgLoadGraphFile(tmpTree))
        {
            if (checkTree(tmpTree))
            {
                fileNodeTree.push_back(tmpTree);
                int imgindex = 0;
                if (tmpTree.fileType == L"mpt")
                    imgindex = 2;
                if (tmpTree.fileType == L"mle")
                    imgindex = 5;
                if (tmpTree.fileType == L"mpn")
                    imgindex = 8;
                if (tmpTree.fileType == L"mll")
                    imgindex = 11;
                if (currentPrj.writeAllNode(fileNodeTree))
                    m_wndPrjView.InsertItem(tmpTree.itemnode, imgindex, imgindex, m_wndPrjView.GetRootItem());
            }
        }
    }
    else
        MessageBox(L"当前没有工程文件,请先新建工程或者打开已有工程", L"提示", MB_ICONWARNING);

    //...ondraw
    pjOnDraw();
}

这里用到了一个checkTree函数,实现如下:

//检查目录树中是否存在同名节点
bool CPrjManage::checkTree(malaTree &tree)
{
    for (size_t i = 0; i < fileNodeTree.size(); i++)
    {
        if (fileNodeTree[i].filePath == tree.filePath)
        {
            return false;
        }
    }
    return true;
}

这个函数主要作用是检查当前目录树中是否已经存在同名文件。

详细代码可以参考:GitHub

相关阅读

麻辣GIS-Sailor

作者:

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

声明

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

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

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

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