VC++开发GIS系统(83)文件激活状态简要实现
发布时间: 2015-12-28
所属分类: VC++开发GIS系统
前文《VC++开发GIS系统(81)文件的状态》和《VC++开发GIS系统(82)文件显示和隐藏的简要实现》中已经介绍了工程中文件的3种状态,并且实现了显示和隐藏状态,今天实现激活状态。
关联菜单响应函数
参考《VC++开发GIS系统(71)响应CTreeCtrl右键菜单的函数》
设置保存当前激活节点的变量
在PrjManage.h中添加下面的变量
//记录当前激活的4张表
HTREEITEM actPointItem;
HTREEITEM actLineItem;
HTREEITEM actPloyItem;
HTREEITEM actLabelItem;
激活文件
//激活文件
void CPrjManage::OnActiveFile()
{
//更新fileNodeTree
CString str = m_wndPrjView.GetItemText(selTreeItem);
for (size_t i = 0; i < fileNodeTree.size(); i++)
{
if (fileNodeTree[i].itemnode == str)
{
//清除之前激活状态
cleanActiveMask(fileNodeTree[i].fileType, selTreeItem);
//设置激活状态
fileNodeTree[i].isOpen = true;
fileNodeTree[i].isActive = true;
int imgindex = 0;
if (fileNodeTree[i].fileType == L"mpt")
imgindex = 4;
if (fileNodeTree[i].fileType == L"mle")
imgindex = 7;
if (fileNodeTree[i].fileType == L"mpn")
imgindex = 10;
if (fileNodeTree[i].fileType == L"mll")
imgindex = 13;
if (currentPrj.writeAllNode(fileNodeTree))
m_wndPrjView.SetItemImage(selTreeItem, imgindex, imgindex);
else
MessageBox(L"激活文件失败", L"提示", MB_ICONWARNING);
}
}
//...ondraw
}
这里的代码其实和《VC++开发GIS系统(82)文件显示和隐藏的简要实现》很相似,只是多了下面一个函数cleanActiveMask,实现如下:
//清除激活状态
void CPrjManage::cleanActiveMask(CString &activeType, HTREEITEM newActive)
{
//vector清除状态
for (size_t i = 0; i < fileNodeTree.size(); i++)
{
if (fileNodeTree[i].fileType == activeType&&fileNodeTree[i].isActive==true)
{
fileNodeTree[i].isActive = false;
}
}
//图标清除状态
if (activeType == L"mpt")
{
if (actPointItem)
{
m_wndPrjView.SetItemImage(actPointItem, 3, 3);
}
actPointItem = newActive;
}
if (activeType == L"mle")
{
if (actLineItem)
{
m_wndPrjView.SetItemImage(actLineItem, 6, 6);
}
actLineItem = newActive;
}
if (activeType == L"mpn")
{
if (actPloyItem)
{
m_wndPrjView.SetItemImage(actPloyItem, 9, 9);
}
actPloyItem = newActive;
}
if (activeType == L"mll")
{
if (actLabelItem)
{
m_wndPrjView.SetItemImage(actLabelItem, 12, 12);
}
actLabelItem = newActive;
}
}
作用是取消之前文件的激活状态(改为显示状态),并将新激活的文件记录下来。这里面用到了一个SetItemImage函数,用于更新文件前面图标。
详细代码可以参考:GitHub
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子