VC++开发GIS系统(82)文件显示和隐藏的简要实现
发布时间: 2015-12-28
所属分类: VC++开发GIS系统
前文《VC++开发GIS系统(81)文件的状态》中介绍了文件的3种状态,下面介绍这3种状态的具体实现,首先介绍显示的隐藏的实现(这里并没有完全实现,会在后文中继续完善。)
关联菜单响应函数
参考《VC++开发GIS系统(71)响应CTreeCtrl右键菜单的函数》
显示文件
//显示文件
void CPrjManage::OnDisplayFile()
{
//更新fileNodeTree
CString str = m_wndPrjView.GetItemText(selTreeItem);
for (size_t i = 0; i < fileNodeTree.size(); i++)
{
if (fileNodeTree[i].itemnode == str)
{
fileNodeTree[i].isOpen = true;
fileNodeTree[i].isActive = false;
int imgindex = 0;
if (fileNodeTree[i].fileType == L"mpt")
imgindex = 3;
if (fileNodeTree[i].fileType == L"mle")
imgindex = 6;
if (fileNodeTree[i].fileType == L"mpn")
imgindex = 9;
if (fileNodeTree[i].fileType == L"mll")
imgindex = 12;
if (currentPrj.writeAllNode(fileNodeTree))
m_wndPrjView.SetItemImage(selTreeItem, imgindex, imgindex);
else
MessageBox(L"打开文件失败", L"提示", MB_ICONWARNING);
}
}
//...ondraw
}
隐藏文件
//隐藏文件
void CPrjManage::OnHideFile()
{
//更新fileNodeTree
CString str = m_wndPrjView.GetItemText(selTreeItem);
for (size_t i = 0; i < fileNodeTree.size(); i++)
{
if (fileNodeTree[i].itemnode == str)
{
fileNodeTree[i].isOpen = false;
fileNodeTree[i].isActive = false;
int imgindex = 0;
if (fileNodeTree[i].fileType==L"mpt")
imgindex = 2;
if (fileNodeTree[i].fileType == L"mle")
imgindex = 5;
if (fileNodeTree[i].fileType == L"mpn")
imgindex = 8;
if (fileNodeTree[i].fileType == L"mll")
imgindex = 11;
if(currentPrj.writeAllNode(fileNodeTree))
m_wndPrjView.SetItemImage(selTreeItem, imgindex, imgindex);
else
MessageBox(L"隐藏文件失败", L"提示", MB_ICONWARNING);
}
}
//...ondraw
}
几点说明
selTreeItem这个变量用于记录被选中的节点,在PrjManage.h中定义,在点击右键的时候(OnContextMenu)赋值:
if (hTreeItem != NULL)
{
pWndTree->SelectItem(hTreeItem);
selTreeItem = hTreeItem;//记录下选中的ITEM
}
下面的代码
for (size_t i = 0; i < fileNodeTree.size(); i++)
...
用于遍历所有的节点,找到当前点击的节点。
if(currentPrj.writeAllNode(fileNodeTree))
...
用于将更改的目录树写入文件,实现方式参考VC++开发GIS系统(79)新建点文件之文件模块代码实现
为什么说是简要实现呢?因为这里只对节点进行了操作,没有发送响应重新绘图的命令。
详细代码可以参考:GitHub
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子