Merge pull request 'fix: 多机自主着陆点右键菜单勾选,连线问题' (#44) from dev/cbwu into master

Reviewed-on: #44
master
WuChengbo 10 months ago
commit 96e309a06b

@ -62,6 +62,7 @@
<OutDir Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">..\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">GISControlDlgUAV</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
@ -96,7 +97,7 @@
<Culture>0x0804</Culture>
</ResourceCompile>
<Link>
<OutputFile>..\Release/GISControlDlg.dll</OutputFile>
<OutputFile>..\Release/GISControlDlgUAV.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\GISControlDlg.def</ModuleDefinitionFile>
<ProgramDatabaseFile>.\Release/GISControlDlg.pdb</ProgramDatabaseFile>
@ -148,7 +149,7 @@
<Culture>0x0804</Culture>
</ResourceCompile>
<Link>
<OutputFile>..\Debug/GISControlDlg.dll</OutputFile>
<OutputFile>..\Debug/GISControlDlgUAV.dll</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\GISControlDlg.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>

@ -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++)
{
@ -1359,6 +1359,57 @@ void CGISDlg::OnShowRMenu()
//当处于回放模式时,设置、导引操作、航线装订子菜单都先灰色
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,6 +6280,11 @@ void CGISDlg::OnUpdateShowBackLine(CCmdUI *pCmdUI)
// TODO: 在此添加命令更新用户界面处理程序代码
if (g_b981ADesktop || g_b981APad)
{
if (g_b981AMulti && (m_line14FlyID>0)) //多机
{
pCmdUI->SetCheck(m_pHaveDrawCopyLineFlag[13][m_line14FlyID-1]);
return;
}
pCmdUI->SetCheck(m_pHaveDrawLineFlag[13]);
}
if (g_b981CDesktop)

@ -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<int,CString> m_lineFullPathName;
//

Loading…
Cancel
Save