in AliRTC2.5/Windows/MFC Demo/RtcSample/RTCSampleMainInterface.cpp [1212:1267]
void CRTCSampleMainInterface::UpdateVideoView(String uid, UINT ViewID, UINT ControlID)
{
if (m_nConsoleOccupancy == ViewID)
{
return;
}
//已存在切换的,先切换回去
AliEngineVideoCanvas canvas;
if (m_nConsoleOccupancy != ControlID)
{
if (m_sRemoteUserCfg.s_strSetOccupyUid.isEmpty() || m_sRemoteUserCfg.s_strSetOccupyUid == "")
{
PreviewLocally(m_nConsoleOccupancy);
}
else
{
//从大屏切回小屏,改为拉取小流
m_pEngine->SetRemoteVideoStreamType(m_sRemoteUserCfg.s_strSetOccupyUid.c_str(), AliEngineVideoStreamTypeLow);
canvas.displayView = GetDlgItem(m_nConsoleOccupancy)->m_hWnd;
m_pEngine->SetRemoteViewConfig(canvas, m_sRemoteUserCfg.s_strSetOccupyUid.c_str(), AliEngineVideoTrackCamera);
}
if (ViewID == IDC_STATIC_MAINROOM && uid.isEmpty())
{
m_nConsoleOccupancy = ViewID;
m_sRemoteUserCfg.s_strSetOccupyUid = uid;
return;//主视图切回原视图,无需再显示主视图
}
}
m_nConsoleOccupancy = ViewID;
m_sRemoteUserCfg.s_strSetOccupyUid = uid;
//切换大小图
if (uid.isEmpty() || uid == "")
{
PreviewLocally(ControlID);
}
else
{
//从小屏切换大屏屏,改为拉取大流
m_pEngine->SetRemoteVideoStreamType(m_sRemoteUserCfg.s_strSetOccupyUid.c_str(), AliEngineVideoStreamTypeHigh);
if (IDC_STATIC_MAINROOM == ControlID)
{
canvas.displayView = m_ctlMainRoom.GetSafeHwnd();
}
else
{
canvas.displayView = GetDlgItem(ControlID)->m_hWnd;
}
m_pEngine->SetRemoteViewConfig(canvas, uid.c_str(), AliEngineVideoTrackCamera);
}
GetDlgItem(ViewID)->Invalidate();
}