📄 myoutput.cpp
字号:
// MyOutput.cpp : implementation file
//
#include "stdafx.h"
#include "newclient.h"
#include "MyOutput.h"
#include "CurWin.h"
#include "newclientDlg.h"
#include "DecodeCardSDK.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
WORD iActiveWndNumber = 0;
WORD m_iSubWndCreated = 0;
extern void F_AddEvent(CString csEvent);
extern CLIENTPARAM ClientParam;
extern CCurwin mycurwin;
extern CMyOutput myoutput[MAXVIEWNUM];
extern HBRUSH hBrush;
extern BOOL g_bShareSound;
extern int g_nNetDelay;
/////////////////////////////////////////////////////////////////////////////
// CMyOutput dialog
RECT g_ShowRect3;
RECT g_MouseRect3;
void CALLBACK DrawFun3(long nPort,HDC hDc,DWORD nUser)
{
::DrawEdge(hDc, &g_ShowRect3, BDR_SUNKENOUTER, BF_RECT);
SetBkMode(hDc, TRANSPARENT);
}
void CALLBACK RealDataCallBack(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser)
{
//TRACE("lRealHandle = %d dwUser = %d dwDataType = %d dwBufSize = %d", lRealHandle, dwUser, dwDataType, dwBufSize);
}
CMyOutput::CMyOutput(CWnd* pParent /*=NULL*/)
: CDialog(CMyOutput::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyOutput)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bIsAutoSave = FALSE;
}
void CMyOutput::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyOutput)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyOutput, CDialog)
//{{AFX_MSG_MAP(CMyOutput)
ON_WM_CREATE()
ON_WM_CTLCOLOR()
ON_WM_DESTROY()
ON_WM_LBUTTONDBLCLK()
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_PAINT()
ON_WM_RBUTTONDOWN()
ON_WM_TIMER()
ON_COMMAND(IDC_MENU_FRONTPAGE, OnMenuFrontpage)
ON_COMMAND(IDC_MENU_NEXTPAGE, OnMenuNextpage)
ON_COMMAND(IDC_MENU_PAUSECYCLE, OnMenuPausecycle)
ON_COMMAND(IDC_MENU_SOUND, OnMenuSound)
ON_COMMAND(IDC_MENU_MULTISCREEN, OnMenuMultiscreen)
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyOutput message handlers
BOOL CMyOutput::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// m_iSubWndCreated = 0;
m_dwDVRIP = 0;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMyOutput::StartNet(PIP_INFO ipinfo)
{
NET_DVR_CLIENTINFO playstru;
char ipaddress[256];
char multiipaddress[256];
char user[100];
char password[100];
WORD iServerPort;
CString sTemp;
ZeroMemory(user,100);
ZeroMemory(password,100);
if(m_iPlayhandle != -1)
{
TRACE("NET_DVR_StopRealPlay m_iPlayhandle = %d", m_iPlayhandle);
if(g_bShareSound)
{
NET_DVR_CloseSoundShare(m_iPlayhandle);
}
if(!NET_DVR_StopRealPlay(m_iPlayhandle))
{
TRACE("NET_DVR_StopRealPlay failed, m_iPlayhandle = %d", m_iPlayhandle);
}
}
m_bNeedjudge = FALSE;
playstru.hPlayWnd = GetSafeHwnd();
playstru.lChannel = ipinfo->m_iChannel;
playstru.lLinkMode = ipinfo->m_dwProtocol;
if(ipinfo->m_dwMultiIPvalue == 0)
strcpy(multiipaddress,"");
else
sprintf(multiipaddress,"%s",ipinfo->m_csMultiIP);
playstru.sMultiCastIP = multiipaddress;
iServerPort = ipinfo->m_wServerport;
//TRACE("StartNet");
m_iPlayhandle = NET_DVR_RealPlay(ipinfo->m_lServerID, &playstru);
if(m_iPlayhandle == -1)
{
DWORD dwErr = NET_DVR_GetLastError();
sprintf(ipaddress,"%s",ipinfo->m_csIP);
sTemp.Format("Start to connect IP:%s Channel%d failed. dwErr = %d",ipaddress,playstru.lChannel, dwErr);
F_AddEvent(sTemp);
TRACE(sTemp);
}
else
{
//TRACE("StartNet m_iPlayhandle = %d", m_iPlayhandle);
switch(g_nNetDelay) {
case 0:
NET_DVR_SetPlayerBufNumber(m_iPlayhandle, 1);
break;
case 1:
NET_DVR_SetPlayerBufNumber(m_iPlayhandle, 6);
break;
case 2:
NET_DVR_SetPlayerBufNumber(m_iPlayhandle, 15);
break;
case 3:
NET_DVR_SetPlayerBufNumber(m_iPlayhandle, 30);
break;
case 4:
NET_DVR_SetPlayerBufNumber(m_iPlayhandle, 45);
break;
default:
NET_DVR_SetPlayerBufNumber(m_iPlayhandle, 15);
break;
}
// NET_DVR_SetPlayerBufNumber(m_iPlayhandle, 15);
NET_DVR_ThrowBFrame(m_iPlayhandle,1);
NET_DVR_SetRealDataCallBack(m_iPlayhandle, RealDataCallBack, m_iPlayhandle);
m_csIP = ipinfo->m_csIP;
m_dwDVRIP = ipinfo->m_dwIPvalue;
m_lServerID = ipinfo->m_lServerID;
m_iChannel = playstru.lChannel;
m_bNeedjudge = TRUE;
}
}
void CMyOutput::StopNet()
{
if(m_iPlayhandle != -1)
{
if(m_bFileSave)
NET_DVR_StopSaveRealData(m_iPlayhandle);
m_bFileSave = FALSE;
if(!NET_DVR_StopRealPlay(m_iPlayhandle))
{
TRACE("NET_DVR_StopRealPlay failed, m_iPlayhandle = %d", m_iPlayhandle);
}
//TRACE("NET_DVR_StopRealPlay");
m_bNeedjudge = FALSE;
invateframe();
m_iPlayhandle = -1;
ClientParam.m_bPlaySound[m_iSubWndNumber] = FALSE;
CNewclientDlg* mainwnd = (CNewclientDlg*) AfxGetMainWnd();
}
}
void CMyOutput::StartCard(PIP_INFO ipinfo)
{
NET_DVR_CARDINFO playstru;
char ipaddress[256];
char multiipaddress[256];
char user[100];
char password[100];
WORD iServerPort;
CString sTemp;
ULONG ulMode = 0;
ZeroMemory(user,100);
ZeroMemory(password,100);
if(m_iPlayhandle != -1)
{
if(!NET_DVR_StopRealPlay(m_iPlayhandle))
{
TRACE("NET_DVR_StopRealPlay failed, m_iPlayhandle = %d", m_iPlayhandle);
}
}
m_bNeedjudge = FALSE;
playstru.lChannel = ipinfo->m_iChannel;
playstru.lLinkMode = ipinfo->m_dwProtocol;
if(ipinfo->m_dwMultiIPvalue == 0)
strcpy(multiipaddress,"");
else
sprintf(multiipaddress,"%s",ipinfo->m_csMultiIP);
playstru.sMultiCastIP = multiipaddress;
iServerPort = ipinfo->m_wServerport;
playstru.struDisplayPara.nLeft = m_display_para.nLeft;
playstru.struDisplayPara.nTop = m_display_para.nTop;
playstru.struDisplayPara.nWidth = m_display_para.nWidth;
playstru.struDisplayPara.nHeight = m_display_para.nHeight;
playstru.struDisplayPara.bToScreen = 1;
playstru.struDisplayPara.bToVideoOut = 1;
TRACE("Use decode card");
m_iPlayhandle = NET_DVR_RealPlay_Card(ipinfo->m_lServerID,&playstru,m_iSubWndNumber);
if(m_iPlayhandle == -1)
{
sprintf(ipaddress,"%s",ipinfo->m_csIP);
sTemp.Format("Start to connect IP:%s Channel%d failed!",ipaddress,playstru.lChannel);
F_AddEvent(sTemp);
TRACE(sTemp);
}
else
{
switch(g_nNetDelay) {
case 0:
ulMode = 1;
break;
case 1:
ulMode = 2;
break;
case 2:
ulMode = 3;
break;
case 3:
ulMode = 4;
break;
case 4:
ulMode = 5;
break;
default:
ulMode = 3;
break;
}
HW_SetStreamOpenMode((HANDLE)m_iSubWndNumber, ulMode);
NET_DVR_ThrowBFrame(m_iPlayhandle,1);
m_csIP = ipinfo->m_csIP;
m_dwDVRIP = ipinfo->m_dwIPvalue;
m_lServerID = ipinfo->m_lServerID;
m_iChannel = playstru.lChannel;
m_bNeedjudge = TRUE;
}
}
BOOL CMyOutput::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::DestroyWindow();
}
BOOL CMyOutput::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// TODO: Add your specialized code here and/or call the base class
if ((nID == 2) || (nID == 1))
return TRUE;
return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
int CMyOutput::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_iSubWndNumber = m_iSubWndCreated++;
m_iPlayhandle = -1;
m_bPlaying = FALSE;
m_bNeedjudge = FALSE;
m_bFileSave = FALSE;
return 0;
}
HBRUSH CMyOutput::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(ClientParam.m_bUseCard)
{
NET_DVR_RestoreSurface_Card();
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(ClientParam.m_bFullScreen || ClientParam.m_bMultiScreen)
{
ClientParam.m_bFullScreen = FALSE;
ClientParam.m_bEnlarged = FALSE;
ClientParam.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( (ClientParam.m_bEnlarged) || (m_iWindowNum == 1) )
{ //One window or enlarge window
mainwnd->F_FullScreen();
MoveWindow(0, 0, 1024, 768, TRUE);
NET_DVR_ThrowBFrame(m_iPlayhandle, 0);
ShowWindow(SW_SHOW);
ClientParam.m_bFullScreen = TRUE;
}
else
{ //Multi windows
NET_DVR_ThrowBFrame(m_iPlayhandle,0);
m_iWindowNum = 1;
ClientParam.m_bEnlarged = TRUE;
mainwnd->ArrayWindow(iActiveWndNumber,m_iWindowNum);
mainwnd->MoveCurWin(m_iWindowNum,iActiveWndNumber);
}
if(!ClientParam.m_bUseCard)
{
DWORD dwBright,dwContrast, dwSaturation, dwHue;
dwBright = dwContrast = dwContrast = dwHue = 0;
NET_DVR_ClientGetVideoEffect(m_iPlayhandle, &dwBright,&dwContrast, &dwSaturation, &dwHue);
ClientParam.m_VideoInfo[iActiveWndNumber].m_iBrightness = dwBright;
ClientParam.m_VideoInfo[iActiveWndNumber].m_iContrast = dwContrast;
ClientParam.m_VideoInfo[iActiveWndNumber].m_iSaturation = dwSaturation;
ClientParam.m_VideoInfo[iActiveWndNumber].m_iHue = dwHue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -