📄 trafficdlg.cpp
字号:
}
else
{
_bstr_t redPath = "E:\\workspace\\Traffic\\Demo\\红灯.bmp";
pILTrafficLamp->put_ImageFileName(redPath);
}
// if(m_nCounter == 2)
// {
// pDOTracks->GetWaypoint(0, &vX,&vZ,&vY,&vSpeed);
// pDOTracks->DeleteWaypoint(0);
// pDOTracks->AddWaypoint(vX.dblVal , vZ.dblVal , vY.dblVal , vSpeed.dblVal , -1);
//
// pDOTracks->GetWaypoint(0, &vX,&vZ,&vY,&vSpeed);
// m_dPreDistance = ;
// return ;
// }
//
// //3帧或3帧以上
// pDOTracks->GetWaypoint(0, &vX,&vZ,&vY,&vSpeed);
// double dNewDistance = sqrt(pow(dX-vX.dblVal , 2) + pow(dY-vY.dblVal , 2));
// CString strTmp;
// strTmp.Format("拐点坐标:%f , %f ; 当前间隔:%f ; 上一次间隔:%f。" , vX.dblVal , vY.dblVal , dNewDistance , m_dPreDistance);
// TRACE(strTmp+"\n");
//
// if(dNewDistance < 6)
// {
// if(dNewDistance > m_dPreDistance)
// {
// pDOTracks->DeleteWaypoint(0);
// pDOTracks->AddWaypoint(vX.dblVal , vZ.dblVal , vY.dblVal , vSpeed.dblVal , -1);
//
// pDOTracks->GetWaypoint(0, &vX,&vZ,&vY,&vSpeed);
// m_dPreDistance = sqrt(pow(dX-vX.dblVal , 2) + pow(dY-vY.dblVal , 2));
//
// //打印waypoints序列
// CString strWaypoints;
// int nCount =0;
// pDOTracks->get_NumberOfWaypoints(&nCount);
// for(int i=0;i<nCount;i++)
// {
// pDOTracks->GetWaypoint(i , &vX,&vZ,&vY,&vSpeed);
// CString strTmp ;
// strTmp.Format("(%f,%f)",vX.dblVal,vY.dblVal);
// strWaypoints += strTmp;
// }
// TRACE(strWaypoints+"\n");
// }
// m_dPreDistance = dNewDistance;
// }
// long itemID ;
// _bstr_t pathName = "Demo";
// itemID = m_pIInformationTree->FindItem(pathName);
// _bstr_t objectID = m_pIInformationTree->GetTerraObjectID(itemID);
//
// ITerraExplorerObject2Ptr pDemo = m_pIObmager->GetObject(objectID);
// ITerrainDynamicObject3Ptr pDODemo = (ITerrainDynamicObject3Ptr)pDemo;
//
// pDODemo->RestartRoute(3);
}
void CTrafficDlg::OnTerraExplorerMessage (_bstr_t TEMessageID,_bstr_t SourceObjectID,
VARIANT * pbHandled ) //Disid:4
{
CString str = _T("Message:OnTerraExplorerMessage:");
CString str1((LPCSTR)TEMessageID);
CString str2((LPCSTR)SourceObjectID);
TRACE("%s\t(TEMessageID-%s)(SourceObjectID-%s)\n", str, str1, str2);
}
void CTrafficDlg::OnObjectAction (BSTR ObjectID,int Action ) //Disid:5
{
CString str = _T("Message:OnObjectAction:");
CString str1((LPCSTR)ObjectID);
TRACE("%s\t(ObjectID-%s)(Action-%d)\n", str, str1, Action);
}
void CTrafficDlg::OnFileSave ( ) //Disid:6
{
CString str = _T("Message:OnFileSave.");
TRACE("%s\n", str);
}
void CTrafficDlg::OnRenderQualityChanged (int Quality ) //Disid:7
{
CString str = _T("Message:OnRenderQualityChanged:");
//TRACE("%s\t(Quality-%d)\n", str, Quality);
}
void CTrafficDlg::OnInputModeChanged (MouseInputMode NewMode ) //Disid:8
{
CString str = _T("Message:OnInputModeChanged:");
//TRACE("%s\t(NewMode-%d)\n", str, NewMode);
}
void CTrafficDlg::OnLButtonDown (long Flags,int X,int Y,VARIANT * pbHandled ) //Disid:9
{
CString str = _T("Message:OnLButtonDown:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnLButtonUp (long Flags,int X,int Y,VARIANT * pbHandled ) //Disid:10
{
CString str = _T("Message:OnLButtonUp:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnMButtonDown (long Flags,int X,int Y,VARIANT * pbHandled ) //Disid:11
{
CString str = _T("Message:OnMButtonDown:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnMButtonUp (long Flags,int X,int Y,VARIANT * pbHandled ) //Disid:12
{
CString str = _T("Message:OnMButtonUp:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnRButtonDown (long Flags,int X,int Y,VARIANT * pbHandled ) //Disid:13
{
CString str = _T("Message:OnRButtonDown:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnRButtonUp (long Flags,int X,int Y,VARIANT * pbHandled ) //Disid:14
{
CString str = _T("Message:OnRButtonUp:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnMouseWheel (long Flags,short zDelta,int X,int Y,VARIANT * pbHandled ) //Disid:15
{
CString str = _T("Message:OnMouseWheel:");
TRACE("%s\t(Flags-%d)\t(zDelta-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, zDelta, X, Y);
}
void CTrafficDlg::OnInfoTreeAction (long ItemID,int Action,long ActionParam ) //Disid:16
{
CString str = _T("Message:OnInfoTreeAction:");
TRACE("%s\t(ItemID-%d)\t(Action-%d)\t(ActionParam-%d)\n", str, ItemID, Action, ActionParam);
}
void CTrafficDlg::OnTerraExplorer (long EventID,int EventParam ) //Disid:17
{
CString str = _T("Message:OnTerraExplorer:");
TRACE("%s\t(EventID-%d)\t(EventParam-%d)\n", str, EventID, EventParam);
}
void CTrafficDlg::OnDrawHUD ( ) //Disid:18
{
CString str = _T("Message:OnDrawHUD.");
// TRACE("%s\n", str);
}
void CTrafficDlg::OnLButtonDblClk (long Flags,int X,int Y,VARIANT * pbHandled )//Disid:19
{
CString str = _T("Message:OnLButtonDblClk:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnRButtonDblClk (long Flags,int X,int Y,VARIANT * pbHandled )//Disid:20
{
CString str = _T("Message:OnRButtonDblClk:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnMButtonDblClk (long Flags,int X,int Y,VARIANT * pbHandled )//Disid:21
{
CString str = _T("Message:OnMButtonDblClk:");
TRACE("%s\t(Flags-%d)\t(X-%d)\t(Y-%d)\n", str, Flags, X, Y);
}
void CTrafficDlg::OnLoad()
{
// TODO: Add your control notification handler code here
_bstr_t strPath = _T(m_strAbsoluteDir + "Demo\\road.FLY");
m_pTerraExplorer->Load(strPath);
HRESULT hr = m_pTerraExplorer->QueryInterface(&m_pIObmager);
ASSERT(SUCCEEDED(hr));
hr = m_pTerraExplorer->QueryInterface(&m_pIInformationTree);
ASSERT(SUCCEEDED(hr));
}
void CTrafficDlg::OnOODemo()
{
// TODO: Add your control notification handler code here
}
UINT WorkThread(LPVOID pMsg)
{
CTrafficDlg* pDlg = (CTrafficDlg*)AfxGetMainWnd();
while (1)
{
Sleep(5000);
pDlg->PostMessage(WM_CHANGETRAFFICLAMPSTATUS , 0 , 0);
}
return 0 ;
}
LRESULT CTrafficDlg::ChangeTrafficLampStatus(WPARAM wp,LPARAM lp)
{
//获取交通灯对象
long itemID ;
_bstr_t pathName = "TrafficLamp";
unsigned short* pObjectID;
m_pIInformationTree->FindItem(pathName,&itemID);
m_pIInformationTree->GetTerraObjectID(itemID , &pObjectID);
ITerraExplorerObject2Ptr pTrafficLamp;
m_pIObmager->GetObject(pObjectID , &pTrafficLamp);
ITerrainImageLabel2Ptr pILTrafficLamp = (ITerrainImageLabel2Ptr)pTrafficLamp;
if(m_bTrafficColour) //绿色,改成红色
{
_bstr_t redPath = "E:\\workspace\\Traffic\\Demo\\红灯.bmp";
pILTrafficLamp->put_ImageFileName(redPath);
}
else
{
_bstr_t greenPath = "E:\\workspace\\Traffic\\Demo\\绿灯.bmp";
pILTrafficLamp->put_ImageFileName(greenPath);
}
m_bTrafficColour = !m_bTrafficColour;
return 0 ;
}
void CTrafficDlg::OnRedGreen()
{
// TODO: Add your control notification handler code here
//启动红绿灯的工作线程
HANDLE hTimeThread; //the handle of the checkSpeedThread
unsigned int timeThreadID;
hTimeThread = (HANDLE)_beginthreadex(0,0,(unsigned int (_stdcall *)(void*))WorkThread,this,0,&timeThreadID);
if (hTimeThread == NULL)
{
TRACE("Can't create the check speed thread!");
return ;
}
CloseHandle(hTimeThread) ;
// ChangeTrafficLampStatus(0 , 0 );
}
void CTrafficDlg::OnPause()
{
// TODO: Add your control notification handler code here
}
//将WayPoints 的第一个点添加到最后一点
void CTrafficDlg::OnTest()
{
// TODO: Add your control notification handler code here
// long itemID ;
// _bstr_t pathName = "Demo";
// itemID = m_pIInformationTree->FindItem(pathName);
// _bstr_t objectID = m_pIInformationTree->GetTerraObjectID(itemID);
//
// ITerraExplorerObject2Ptr pDemo = m_pIObmager->GetObject(objectID);
// ITerrainDynamicObject3Ptr pDODemo = (ITerrainDynamicObject3Ptr)pDemo;
//
// double x , y , altitude , speed ;
// pDODemo.GetWaypoint(0 , (VARIANT*)&x , (VARIANT*)&altitude , (VARIANT*)&y , (VARIANT*)&speed);
// pDODemo.DeleteWaypoint(0);
// pDODemo.AddWaypoint(x, altitude , y , speed , -1);
VARIANT vX , vY ,vZ , vYaw , vPitch , vRoll , vSpeed;
long itemID ;
_bstr_t pathName = "Tracks";
unsigned short* pObjectID;
m_pIInformationTree->FindItem(pathName,&itemID);
m_pIInformationTree->GetTerraObjectID(itemID , &pObjectID);
ITerraExplorerObject2Ptr pTEO2;
m_pIObmager->GetObject(pObjectID , &pTEO2);
ITerrainDynamicObject3Ptr pDOTracks = (ITerrainDynamicObject3Ptr)pTEO2;
pathName = "Nissan";
m_pIInformationTree->FindItem(pathName,&itemID);
m_pIInformationTree->GetTerraObjectID(itemID , &pObjectID);
m_pIObmager->GetObject(pObjectID , &pTEO2);
ITerrainModel2Ptr pTMNissan = (ITerrainModel2Ptr)pTEO2;
pDOTracks->GetWaypoint(0 , &vX , &vZ , &vY , &vSpeed);
pDOTracks->DeleteWaypoint(0);
pDOTracks->AddWaypoint(vX.dblVal , vZ.dblVal , vY.dblVal , vSpeed.dblVal , -1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -