TRUE;
}
3.视频1,4,9,16路画面切换显示
较简单地实现,在窗体上拖16个STATIC控件(定义数组为panels),动态调整它们的位置大小即可,然后定义一个类如CPlayStatic去继 承CStatic,每一个STATIC控件就由CPlayStatic管理;因为我们要在Static控件上添加鼠标,键盘事件处理,鼠标单击事件,选中 该一播放面板时绘制绿色边框,可以很明显地看出当前是选中那一路视频播放窗体,同时恢复上一路选中边框为默认灰色边框;鼠标双击事件,实现视频浏览窗口的 全屏功能(按多路预览-->单屏预览-->全屏-->单路浏览-->多路预览);右击菜单,对当前画面进行操作,如本地录像,语 音对讲,抓图等操作;键盘事件处理,如该窗体当前正在预览按F2/F键进入全屏模式,按Esc退出全屏,恢复普通模式(需让该窗体获得焦点,处理 KeyDown事件)
void CRealPlayDlg::ArrangeWindow()
{
//channelNum当前需要的视频路数
int i=0, j=0, k=-1;
switch (channelNum)
{
case 1://DVR只有1个视频通道时候 只显示播放窗口1
//show=GetDlgItem(IDC_S01);
//show->MoveWindow(0,0,640,520);
panels[0]->SetWindowPos(NULL,0,0,640,520,SWP_NOZORDER);
panels[0]->ShowWindow(SW_SHOW);
//隐藏其他通道播放面板
for (i=1; i<16; i++)
{
panels[i]->ShowWindow(SW_HIDE);
}
m_Expanded = true;
break;
case 4://DVR有4个视频通道
panels[0]->MoveWindow(0,0,319,259);
panels[0]->ShowWindow(SW_SHOW);
panels[1]->MoveWindow(320,0,320,259);
panels[1]->ShowWindow(SW_SHOW);
panels[2]->MoveWindow(0,260,319,260);
panels[2]->ShowWindow(SW_SHOW);
panels[3]->MoveWindow(320,260,320,260);
panels[3]->ShowWindow(SW_SHOW);
for (i=4; i<16; i++)
{
panels[i]->ShowWindow(SW_HIDE);
}
m_Expanded=false;
break;
case 9://DVR有9个视频通道
for (i=0; i<10; i++)
{
j = i % 3;
if (j == 0)
{
k++;
}
panels[i]->SetWindowPos(NULL,j * 214,k * 174,213,173,SWP_NOZORDER);
panels[i]->ShowWindow(SW_SHOW);
}
for (i=9; i<16; i++)
{
panels[i]->ShowWindow(SW_HIDE);
}
m_Expanded=false;
break;
case 16://DVR有16个视频通道
for (i=0; i<16; i++)
{
j=i % 4;
if (j == 0)
{
k++;
}
panels[i]->SetWindowPos(NULL,j * 160,k * 130,159,129,SWP_NOZORDER);
panels[i]->ShowWindow(SW_SHOW);
}
m_Expanded=false;
break;
}
Invalidate();//立即重绘窗体,显示效果
}