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

VC++开发GIS系统(103)载入文件之对话框的导出 VC++开发GIS系统(105)打开工程之导出对话框

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论