Ejemplo n.º 1
0
void FMediaContainer::UpdateLayout()
{
	FRect r; 
	GetClientRect(&r); 

	if (m_ControlBar.IsWindowVisible())
	{
		FRect r1 = r; 
		r1.bottom = m_CBarHeight; 
		m_ControlBar.MoveWindow(&r1, TRUE); 
		r.top = r1.bottom; 
		m_ControlBar.UpdateWindow(); 
	}


	if (m_pAdWindows[0] && m_pAdWindows[0]->IsAdShowing())
	{
		Pause(); 
		m_pMediaPlayer.ShowWindow(SW_HIDE); 
		//Full screen ad
		m_pAdWindows[0]->MoveWindow(&r); 

		return; 
	}

	for (size_t k = 1; k < MAX_AD_WINDOWS; k++)
	{
		if (m_pAdWindows[k] && m_pAdWindows[k]->IsAdShowing())
		{
			FRect rWnd; 
			long lAdHeight = m_pAdWindows[k]->GetPreferedHeight();
			long lAdWidth  = m_pAdWindows[k]->GetPreferedWidth();

			AdTypes adType = (AdTypes) (k + 1);
			switch(adType)
			{
			case AdHTop:
				rWnd.SetRect(r.left, r.top, r.right, r.top + lAdHeight);
				break;
			case AdHBottom:
				rWnd.SetRect(r.left, r.bottom - lAdHeight, r.right, r.bottom); 
				break; 
			case AdVRight:
				rWnd.SetRect(r.right - lAdWidth, r.top, r.right, r.bottom); 
				break; 
			case AdVLeft:
				rWnd.SetRect(r.left, r.top, r.right - lAdWidth, r.bottom); 
				break;
			}

			//TODO: Check for reasonable width / height
			m_pAdWindows[k]->MoveWindow(&rWnd); 

			if (!m_pAdWindows[k]->SetZPosition())
			{
				//returns TRUE if window is positioned on top of the Z-order
				//returns FALSE if window z-position is not changed. must resize the video window in this case
				::SubtractRect(&r, &r, &rWnd); 
			}
		}
	}
	m_pMediaPlayer.MoveWindow(&r, TRUE); 
	
}