diff --git a/GISControlDlg.vcxproj b/GISControlDlg.vcxproj index d874ef7..0eaefd5 100644 --- a/GISControlDlg.vcxproj +++ b/GISControlDlg.vcxproj @@ -62,6 +62,7 @@ ..\$(Configuration)\ $(Configuration)\ GISControlDlgUAV + $(ProjectName) @@ -96,7 +97,7 @@ 0x0804 - ..\Release/GISControlDlg.dll + ..\Release/GISControlDlgUAV.dll true .\GISControlDlg.def .\Release/GISControlDlg.pdb @@ -148,7 +149,7 @@ 0x0804 - ..\Debug/GISControlDlg.dll + ..\Debug/GISControlDlgUAV.dll true .\GISControlDlg.def true diff --git a/GISDlg.cpp b/GISDlg.cpp index 0092985..ed33573 100644 --- a/GISDlg.cpp +++ b/GISDlg.cpp @@ -195,7 +195,7 @@ CGISDlg::CGISDlg(CWnd* pParent /*=NULL*/) { m_subLineLayerID[i][j]=-1; m_subLinePtLayerID[i][j]=-1; - m_pHaveDrawCopyLineFlag[i][j] = -1; + m_pHaveDrawCopyLineFlag[i][j] = false; } } m_bShowCopyLine = false; @@ -305,7 +305,7 @@ CGISDlg::CGISDlg(CWnd* pParent /*=NULL*/) m_ppPlanLineShpLayerIDArr[i][j] = -1; } } - + m_line14FlyID = -1; //航线是否已经标绘的标志 for (i=0; i<14; i++) { @@ -1358,7 +1358,58 @@ void CGISDlg::OnShowRMenu() //当处于回放模式时,设置、导引操作、航线装订子菜单都先灰色 - menu.LoadMenu(IDR_MENU2); + menu.LoadMenu(IDR_MENU2); + + if (g_b981ADesktop || g_b981APad) + { + // 获取子菜单 + CMenu* pSubMenu = menu.GetSubMenu(0); // 第一个子菜单 + //int nn = pSubMenu->GetMenuItemCount(); + + if (pSubMenu) + { + pSubMenu->ModifyMenu(5, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //隐藏高程分析 + pSubMenu->ModifyMenu(7, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //隐藏标绘 + + // 获取二级子菜单 + CMenu* pSubSubMenu = pSubMenu->GetSubMenu(2); // 二级子菜单(航线子项) + //int nn2 = pSubSubMenu->GetMenuItemCount(); + if (pSubSubMenu) + { + // 隐藏二级子菜单的第一个子项 + //pSubSubMenu->ModifyMenu(IDM_SHOW_LINE14, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //隐藏空投航线 + pSubSubMenu->RemoveMenu(IDM_SHOW_LINE14, MF_BYCOMMAND); //隐藏空投航线 + + // 修改二级子菜单文本 + pSubMenu->ModifyMenu(ID_BIND_BACKLINE, MF_STRING, ID_BIND_BACKLINE, _T("自主着陆点装订")); + pSubMenu->ModifyMenu(ID_SHOW_BACKLINE, MF_STRING, ID_SHOW_BACKLINE, _T("自主着陆点显示")); + //航线14 回收航线 +/* + if (m_pHaveDrawLineFlag[13]) + { + pSubMenu->CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_CHECKED ); + } + else + { + pSubMenu->CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_UNCHECKED ); + }*/ + if (g_b981AMulti && m_line14FlyID >0) + { + if (m_pHaveDrawCopyLineFlag[13][m_line14FlyID-1]) + { + menu.CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_CHECKED ); + } + else + { + menu.CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_UNCHECKED ); + } + } + DrawMenuBar(); + } + } + } + + //设置限制区勾选状态 SetMenuZoneCheck(menu); @@ -1463,14 +1514,17 @@ void CGISDlg::OnShowRMenu() if (g_b981ADesktop || g_b981APad) { - //航线14 回收航线 - if (m_pHaveDrawLineFlag[13]) + if (!g_b981AMulti) { - menu.CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_CHECKED ); - } - else - { - menu.CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_UNCHECKED ); + //航线14 回收航线 + if (m_pHaveDrawLineFlag[13]) + { + menu.CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_CHECKED ); + } + else + { + menu.CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_UNCHECKED ); + } } //航线11 应急航线 @@ -1588,44 +1642,6 @@ void CGISDlg::OnShowRMenu() //menu.GetSubMenu(0)->ModifyMenu(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); - if (g_b981ADesktop || g_b981APad) - { - // 获取子菜单 - CMenu* pSubMenu = menu.GetSubMenu(0); // 第一个子菜单 - //int nn = pSubMenu->GetMenuItemCount(); - - if (pSubMenu) - { - pSubMenu->ModifyMenu(5, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //隐藏高程分析 - pSubMenu->ModifyMenu(7, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //隐藏标绘 - - // 获取二级子菜单 - CMenu* pSubSubMenu = pSubMenu->GetSubMenu(2); // 二级子菜单(航线子项) - //int nn2 = pSubSubMenu->GetMenuItemCount(); - if (pSubSubMenu) - { - // 隐藏二级子菜单的第一个子项 - //pSubSubMenu->ModifyMenu(IDM_SHOW_LINE14, MF_BYPOSITION | MF_DISABLED | MF_GRAYED); //隐藏空投航线 - pSubSubMenu->RemoveMenu(IDM_SHOW_LINE14, MF_BYCOMMAND); //隐藏空投航线 - - // 修改二级子菜单文本 - pSubMenu->ModifyMenu(ID_BIND_BACKLINE, MF_STRING, ID_BIND_BACKLINE, _T("自主着陆点装订")); - pSubMenu->ModifyMenu(ID_SHOW_BACKLINE, MF_STRING, ID_SHOW_BACKLINE, _T("自主着陆点显示")); - //航线14 回收航线 - if (m_pHaveDrawLineFlag[13]) - { - pSubMenu->CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_CHECKED ); - } - else - { - pSubMenu->CheckMenuItem( ID_SHOW_BACKLINE, MF_BYCOMMAND | MF_UNCHECKED ); - } - DrawMenuBar(); - } - } - } - - //弹出快捷菜单 menu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this ); @@ -4734,7 +4750,7 @@ void CGISDlg::DrawCopyFlyLine(const DrawLineDataStruct lineData) /////////////////////往SHP图层中加入目标点标注信息/////////////////////////////// //重新绘制 - m_map.Redraw(); + m_map.Redraw2(mapWindow::RedrawMinimal); } @@ -5072,7 +5088,20 @@ void CGISDlg::ClearDrawedCopyLine(const int lineID,const int sublineID) void CGISDlg::SetFlyLineShowStatus(const int lineID) { int lineIndex = lineID - 1; - + bool bMulti = false; + if (g_b981AMulti) + { + for (int i=0;i<255;++i) + { + if (m_pHaveDrawCopyLineFlag[lineIndex][i]) + { + ClearDrawedCopyLine(lineIndex,i); + //m_map.Redraw(); + m_pHaveDrawCopyLineFlag[lineIndex][i] = false; + bMulti = true; + } + } + } //已经标绘,清除航线 if (m_pHaveDrawLineFlag[lineIndex]) { @@ -5080,29 +5109,14 @@ void CGISDlg::SetFlyLineShowStatus(const int lineID) ClearDrawedLine(lineIndex); //刷新 - m_map.Redraw(); + //m_map.Redraw(); //标识置false m_pHaveDrawLineFlag[lineIndex] = false; - - if (g_b981AMulti) - { - for (int i=0;i<255;++i) - { - if (m_pHaveDrawCopyLineFlag[lineIndex][i]) - { - ClearDrawedCopyLine(lineIndex,i); - //刷新 - m_map.Redraw2(mapWindow::RedrawMinimal); - //m_map.Redraw(); - m_pHaveDrawCopyLineFlag[lineIndex][i] = false; - } - } - } } else { - + if(bMulti) return; TCHAR filter[500]=_T("航线文件(*.txt)\0*.txt\0)"); CFileDialog LineRouteDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter, NULL); @@ -5132,8 +5146,9 @@ void CGISDlg::SetFlyLineShowStatus(const int lineID) m_bShowCopyLine = false; } } - } + //刷新 + m_map.Redraw2(mapWindow::RedrawMinimal); } void CGISDlg::OnUpdateLineDisplay1( CCmdUI *pCmdUI ) @@ -5231,8 +5246,13 @@ void CGISDlg::OnShowGivenLine(const CString strLineFileName) } m_lineFullPathName[lineDataGroup.lineID] = strLineFileName; - if (lineDataGroup.pts[0].nV>0) //多机ID号 + if (g_b981AMulti && lineDataGroup.pts[0].nV>0) //多机ID号 { + if (lineDataGroup.lineID==14) + { + m_line14FlyID = lineDataGroup.pts[0].nV; + SetBindLine14Coordinate(lineDataGroup.pts[0].nV,lineDataGroup.pts[0].dX,lineDataGroup.pts[0].dY); + } //清除标绘的航线 ClearDrawedCopyLine(lineDataGroup.lineID-1,lineDataGroup.pts[0].nV-1); @@ -6260,7 +6280,12 @@ void CGISDlg::OnUpdateShowBackLine(CCmdUI *pCmdUI) // TODO: 在此添加命令更新用户界面处理程序代码 if (g_b981ADesktop || g_b981APad) { - pCmdUI->SetCheck(m_pHaveDrawLineFlag[13]); + if (g_b981AMulti && (m_line14FlyID>0)) //多机 + { + pCmdUI->SetCheck(m_pHaveDrawCopyLineFlag[13][m_line14FlyID-1]); + return; + } + pCmdUI->SetCheck(m_pHaveDrawLineFlag[13]); } if (g_b981CDesktop) { diff --git a/GISDlg.h b/GISDlg.h index f44ea72..291c2a9 100644 --- a/GISDlg.h +++ b/GISDlg.h @@ -259,7 +259,8 @@ private: long m_subLineLayerID[20][255]; //子航线线图层号 long m_subLinePtLayerID[20][255]; //子航线点图层号 - bool m_pHaveDrawCopyLineFlag[20][255]; + bool m_pHaveDrawCopyLineFlag[20][255]; //图层是否已绘制 + int m_line14FlyID; //自主着陆点飞机ID bool m_bShowCopyLine; map m_lineFullPathName; //