⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trafficdlg.cpp

📁 基于skyline开发的交通管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	}
	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 + -