myoutput.cpp
来自「监控开发资料,提供二次开发源码和使用说明书」· C++ 代码 · 共 608 行 · 第 1/2 页
CPP
608 行
return hBrush;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
void CMyOutput::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
}
void CMyOutput::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
iActiveWndNumber = m_iSubWndNumber;
if(m_iPlayhandle < 0)
return;
CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd();
m_iWindowNum = mainwnd->WINDOWNUM;
if(hikClientParam.m_bFullScreen || hikClientParam.m_bMultiScreen)
{
hikClientParam.m_bFullScreen = FALSE;
hikClientParam.m_bEnlarged = FALSE;
hikClientParam.m_bMultiScreen = FALSE;
NET_DVR_ThrowBFrame(m_iPlayhandle, 2);
mainwnd->F_EndFullScreen();
mainwnd->ArrayWindow(iActiveWndNumber,m_iWindowNum);
mycurwin.ShowWindow(SW_SHOW);
mainwnd->MoveCurWin(m_iWindowNum,iActiveWndNumber);
return;
}
if( (hikClientParam.m_bEnlarged) || (m_iWindowNum == 1) )
{ //一个窗口或者窗口放大
mainwnd->F_FullScreen();
MoveWindow(0, 0, 1024, 768, TRUE);
NET_DVR_ThrowBFrame(m_iPlayhandle, 0);
ShowWindow(SW_SHOW);
hikClientParam.m_bFullScreen = TRUE;
}
else
{ //多窗口
NET_DVR_ThrowBFrame(m_iPlayhandle,0);
m_iWindowNum = 1;
hikClientParam.m_bEnlarged = TRUE;
mainwnd->ArrayWindow(iActiveWndNumber,m_iWindowNum);
mainwnd->MoveCurWin(m_iWindowNum,iActiveWndNumber);
}
if(!hikClientParam.m_bUseCard)
{
DWORD dwBright,dwContrast, dwSaturation, dwHue;
dwBright = dwContrast = dwContrast = dwHue = 0;
NET_DVR_ClientGetVideoEffect(m_iPlayhandle, &dwBright,&dwContrast, &dwSaturation, &dwHue);
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness = dwBright;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast = dwContrast;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation = dwSaturation;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iHue = dwHue;
}
CDialog::OnLButtonDblClk(nFlags, point);
}
void CMyOutput::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd();
if(iActiveWndNumber != m_iSubWndNumber)
{
iActiveWndNumber = m_iSubWndNumber;
mainwnd->MoveCurWin(mainwnd->WINDOWNUM, iActiveWndNumber);
mainwnd->F_ShowVideoParams();
if(!hikClientParam.m_bUseCard)
{
DWORD dwBright,dwContrast, dwSaturation, dwHue;
dwBright = dwContrast = dwSaturation = dwHue = 0;
NET_DVR_ClientGetVideoEffect(m_iPlayhandle, &dwBright,&dwContrast, &dwSaturation, &dwHue);
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness = dwBright;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast = dwContrast;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation = dwSaturation;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iHue = dwHue;
}
}
CDialog::OnLButtonDown(nFlags, point);
}
void CMyOutput::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnMouseMove(nFlags, point);
}
void CMyOutput::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(hikClientParam.m_bUseCard)
NET_DVR_RestoreSurface_Card();
// Do not call CDialog::OnPaint() for painting messages
}
void CMyOutput::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu m_PopMenu;
CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd();
if(iActiveWndNumber != m_iSubWndNumber)
{
iActiveWndNumber = m_iSubWndNumber;
mainwnd->MoveCurWin(mainwnd->WINDOWNUM, iActiveWndNumber);
mainwnd->F_ShowVideoParams();
if(!hikClientParam.m_bUseCard)
{
DWORD dwBright,dwContrast, dwSaturation, dwHue;
dwBright = dwContrast = dwSaturation = dwHue = 0;
NET_DVR_ClientGetVideoEffect(m_iPlayhandle, &dwBright,&dwContrast, &dwSaturation, &dwHue);
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness = dwBright;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast = dwContrast;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation = dwSaturation;
hikClientParam.m_VideoInfo[iActiveWndNumber].m_iHue = dwHue;
}
}
if(hikClientParam.m_bFullScreen || hikClientParam.m_bMultiScreen)
return;
if(!m_PopMenu.LoadMenu(IDR_MENU1))
return;
ClientToScreen(&point);
CMenu *psub = (CMenu *)m_PopMenu.GetSubMenu(0);
psub->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
psub->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
psub->EnableMenuItem(2, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
psub->EnableMenuItem(3, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
if(hikClientParam.m_bCycling)
{
if(hikClientParam.m_bPaused)
psub->ModifyMenu(0, MF_BYPOSITION, IDC_MENU_PAUSECYCLE, "开始循环");
else
psub->ModifyMenu(0, MF_BYPOSITION, IDC_MENU_PAUSECYCLE, "暂停循环");
psub->EnableMenuItem(0, MF_BYPOSITION | MF_ENABLED);
psub->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
psub->EnableMenuItem(2, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
}
else
{
if(hikClientParam.m_bNextPage)
{
psub->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
psub->EnableMenuItem(1, MF_BYPOSITION | MF_ENABLED);
}
if(hikClientParam.m_bFrontPage)
{
psub->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
psub->EnableMenuItem(2, MF_BYPOSITION | MF_ENABLED);
}
}
// if(m_iPlayhandle >= 0)
{
if(hikClientParam.m_bPlaySound[iActiveWndNumber])
psub->ModifyMenu(3, MF_BYPOSITION, IDC_MENU_SOUND, "关闭声音");
else
psub->ModifyMenu(3, MF_BYPOSITION, IDC_MENU_SOUND, "打开声音");
psub->EnableMenuItem(3, MF_BYPOSITION | MF_ENABLED);
}
psub->EnableMenuItem(4, MF_BYPOSITION | MF_ENABLED);
psub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
m_PopMenu.DestroyMenu();
CDialog::OnRButtonDown(nFlags, point);
}
void CMyOutput::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnTimer(nIDEvent);
}
void CMyOutput::OnMenuFrontpage()
{
// TODO: Add your command handler code here
CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd();
mainwnd->F_FrontPage();
}
void CMyOutput::OnMenuNextpage()
{
// TODO: Add your command handler code here
CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd();
mainwnd->F_NextPage();
}
void CMyOutput::OnMenuPausecycle()
{
// TODO: Add your command handler code here
CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd();
mainwnd->F_CyclePause();
}
void CMyOutput::OnMenuSound()
{
// TODO: Add your command handler code here
int i;
WORD wTemp;
WORD wVolumevalue;
wTemp = (0xFFFF) / 100;
wVolumevalue = 50 * wTemp;
if(myoutput[iActiveWndNumber].m_iPlayhandle >= 0)
{
if(hikClientParam.m_bUseCard)
{
if(hikClientParam.m_bPlaySound[iActiveWndNumber])
{
NET_DVR_CloseSound_Card(myoutput[iActiveWndNumber].m_iPlayhandle);
hikClientParam.m_bPlaySound[iActiveWndNumber] = FALSE;
}
else
{
NET_DVR_OpenSound_Card(myoutput[iActiveWndNumber].m_iPlayhandle);
NET_DVR_AudioPreview_Card(myoutput[iActiveWndNumber].m_iPlayhandle, TRUE);
NET_DVR_SetVolume_Card(myoutput[iActiveWndNumber].m_iPlayhandle, wVolumevalue);
hikClientParam.m_bPlaySound[iActiveWndNumber] = TRUE;
}
}
else
{
TRACE("Close Audio");
if(!g_bShareSound)
{
NET_DVR_CloseSound();
}
if(hikClientParam.m_bPlaySound[iActiveWndNumber])
{
TRACE("Close m_bPlaySound[%d] Sound", iActiveWndNumber);
hikClientParam.m_bPlaySound[iActiveWndNumber] = FALSE;
if(g_bShareSound)
{
NET_DVR_CloseSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle);
}
}
else
{
TRACE("Open m_bPlaySound[%d] = TRUE Sound", iActiveWndNumber);
hikClientParam.m_bPlaySound[iActiveWndNumber] = TRUE;
if(g_bShareSound)
{
if(!NET_DVR_OpenSoundShare(myoutput[iActiveWndNumber].m_iPlayhandle))
TRACE("Client Play Audio error");
}
else
{
if(!NET_DVR_OpenSound(myoutput[iActiveWndNumber].m_iPlayhandle))
TRACE("Client Play Audio error");
}
if(!NET_DVR_Volume(myoutput[iActiveWndNumber].m_iPlayhandle, wVolumevalue))
TRACE("Client Audio Volume error");
}
}
if(!g_bShareSound)
{
for(i = 0; i < MAXVIEWNUM; i++)
{ //关闭别的窗口声音标志
if(i == (int)iActiveWndNumber)
continue;
hikClientParam.m_bPlaySound[i] = FALSE;
}
}
}
}
void CMyOutput::OnMenuMultiscreen()
{
// TODO: Add your command handler code here
if(m_iPlayhandle < 0)
return;
CNewclientDlg* mainwnd = (CNewclientDlg*) AfxGetMainWnd();
hikClientParam.m_bMultiScreen = TRUE;
mainwnd->F_FullScreen();
mainwnd->ArrayWindow(iActiveWndNumber,mainwnd->WINDOWNUM);
mainwnd->MoveCurWin(mainwnd->WINDOWNUM,iActiveWndNumber);
// StopNet();
}
void CMyOutput::invateframe()
{
Invalidate(TRUE);
UpdateData(FALSE);
if(hikClientParam.m_bUseCard)
NET_DVR_RefreshSurface_Card();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?