VC++开发GIS系统(80)新建点文件
发布时间: 2015-12-27
所属分类: VC++开发GIS系统
前文《VC++开发GIS系统(78)新建点文件之导出新建点文件对话框》和《VC++开发GIS系统(79)新建点文件之文件模块代码实现》实现了新建点文件的对话框和文件模块。下面就是整体调用了,方法如下:
1. 响应新建点文件
方法参考《VC++开发GIS系统(71)响应CTreeCtrl右键菜单的函数》这里就不多说了。
2. 响应代码实现
/*
* 新建点文件
*/
void CPrjManage::OnNewPoint()
{
//MessageBox(L"点文件", L"提示", MB_ICONASTERISK);
//先判断有没打开工程
if (mBasePath!=L"")//判断是否已经有工程存在,否则不能打开
{
CString pointFileName;
if (dlgNewPointFile(pointFileName))//如果用户在对话框中设置了用户名
{
malaTree tpNode;
if (makeTree(tpNode, pointFileName, L"mpt"))//函数见下文
{
CFileFind fFind;
if (!fFind.FindFile(tpNode.filePath))//如果文件不存在(也就是不冲突,没有同名文件)
{
fileNodeTree.push_back(tpNode);
if (currentPrj.newPointFile(fileNodeTree, tpNode.filePath))//如果文件操作成功
{
HTREEITEM hItem = m_wndPrjView.GetRootItem();
m_wndPrjView.InsertItem(tpNode.itemnode, 2, 2, hItem);//插入目录树节点
}
else
{
MessageBox(L"创建文件失败", L"提示", MB_ICONWARNING);
}
}
else
{
MessageBox(L"文件已经存在", L"提示", MB_ICONWARNING);
}
}
else
{
MessageBox(L"创建文件失败", L"提示", MB_ICONWARNING);
}
}
else
{
MessageBox(L"创建文件失败", L"提示", MB_ICONWARNING);
}
}
else
{
MessageBox(L"当前没有工程文件,请先新建工程或者打开已有工程", L"提示", MB_ICONWARNING);
}
}
上面用到了一个makeTree函数,实现如下:
//构造文件节点
bool CPrjManage::makeTree(malaTree &rTree, CString fileName, CString fileType)
{
rTree.filePath = mBasePath + fileName +L"."+ fileType;
rTree.fileType = fileType;
rTree.itemnode = fileName + L"." + fileType;
rTree.isActive = false;
rTree.isOpen = false;
for (size_t i = 0; i < fileNodeTree.size(); i++)
{
if (fileNodeTree[i].filePath == rTree.filePath)
{
return false;
}
}
return true;
}
这个函数用来构造一个目录树节点,并且判断如果目录树中已经有同名的节点,则创建失败。
详细代码可以参考:GitHub
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子