From 81a4f36affdb9df9e157f825d21d8574b5b4ad13 Mon Sep 17 00:00:00 2001
From: cbwu <504-wuchengbo@htsdfp.com>
Date: Sat, 24 Aug 2024 23:39:30 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E6=9C=BA=E8=87=AA=E4=B8=BB?=
=?UTF-8?q?=E7=9D=80=E9=99=86=E7=82=B9=E5=8F=B3=E9=94=AE=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E5=8B=BE=E9=80=89=EF=BC=8C=E8=BF=9E=E7=BA=BF=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
GISControlDlg.vcxproj | 5 +-
GISDlg.cpp | 165 ++++++++++++++++++++++++------------------
GISDlg.h | 3 +-
3 files changed, 100 insertions(+), 73 deletions(-)
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;
//