⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playsdkdemo.cpp

📁 它是一个可以实时交互的嵌入式软件系统
💻 CPP
字号:
// PlaySDKDemo.cpp : implementation file
//

#include "stdafx.h"
#include "netsdkdemo.h"
#include "PlaySDKDemo.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPlaySDKDemo dialog


CPlaySDKDemo::CPlaySDKDemo(CWnd* pParent /*=NULL*/)
	: CDialog(CPlaySDKDemo::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPlaySDKDemo)
	m_strIP = _T("");
	m_nChannel = 0;
	//}}AFX_DATA_INIT
}


void CPlaySDKDemo::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPlaySDKDemo)
	DDX_Text(pDX, IDC_EDIT_IP, m_strIP);
	DDV_MaxChars(pDX, m_strIP, 20);
	DDX_Text(pDX, IDC_EDIT_CHANNEL, m_nChannel);
	DDV_MinMaxUInt(pDX, m_nChannel, 1, 32);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPlaySDKDemo, CDialog)
	//{{AFX_MSG_MAP(CPlaySDKDemo)
	ON_BN_CLICKED(IDC_BTN_PLAY, OnBtnPlay)
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_BTN_STOP, OnBtnStop)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPlaySDKDemo message handlers

void CPlaySDKDemo::OnBtnPlay() 
{
	if (!m_bPlaying) 
	{
		if (!UpdateData(TRUE))
		{
			return;
		}
		long lret;
		int error;
		LONG lLoginID = CLIENT_Login(m_strIP.GetBuffer(0), 37777, "admin", "admin", 0, &error);
		if (!lLoginID)
		{
			((CNetSDKDemoDlg *)GetParent())->ShowLastMessage(); //Zhengdh 06.11.24
			MessageBox("Login failed");
			return;
		}
		m_lLoginID = lLoginID;
		
		lret = PLAY_OpenStream(0,0,0);
		if (lret != 0)
		{
			MessageBox("Open stream failed");
		}
		
		lret = PLAY_Play(0, (LONG)GetDlgItem(IDC_SCREEN_PLAYSDK)->m_hWnd);
		if (lret != 0)
		{
			MessageBox("Start play failed");
		}
		
		LONG lChannelID = CLIENT_RealPlayEx(lLoginID, m_nChannel - 1, 0, RType_Realplay);
		if (!lChannelID)
		{
			((CNetSDKDemoDlg *)GetParent())->ShowLastMessage();//Zhengdh 06.11.24
			MessageBox("Open channel failed");
			return;
		}
		m_lChannelID = lChannelID;
		
		BOOL bret = CLIENT_SetRealDataCallBack(lChannelID, PlaySDKCallBack, (DWORD)this);
		if (!bret)
		{
			ShowLastMessage();//Zhengdh 06.11.24
			MessageBox("Set call back failed");
			return;
		}
		m_bPlaying = TRUE;
	}
}

void CALLBACK PlaySDKCallBack(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, DWORD dwUser)
{
	if(dwUser == 0)
	{
		return;
	}
	CPlaySDKDemo *dlg = (CPlaySDKDemo *)dwUser;
	dlg ->AddData(lRealHandle,dwDataType, (char *)pBuffer, dwBufSize);
}

void CPlaySDKDemo::AddData(LONG lRealHandle, DWORD dwDataType, char *pBuffer, DWORD dwBufSize)
{
	PLAY_InputData(0, (long *)pBuffer, dwBufSize);
}

BOOL CPlaySDKDemo::OnInitDialog() 
{
	CDialog::OnInitDialog();
	LONG lret;

	m_nChannel = 1;
	m_lLoginID = 0;
	m_lChannelID = 0;
	m_bPlaying = FALSE;
	UpdateData(FALSE);
	
	lret = PLAY_Initial((LONG)GetDlgItem(IDC_SCREEN_PLAYSDK)->m_hWnd);
	if (lret != 0)
	{
		MessageBox("Play initialize failed");
	}

	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPlaySDKDemo::OnClose() 
{
	LONG lret;
	
	if (m_bPlaying)
	{
		OnBtnStop();
	}

	lret = PLAY_Free();
	if (lret != 0)
	{
		MessageBox("Play free failed");
	}
	CDialog::OnClose();
}

void CPlaySDKDemo::OnBtnStop() 
{
	BOOL bret;
	if (m_bPlaying)
	{
		bret = CLIENT_StopRealPlay(m_lChannelID);
		if (!bret) 
		{
			MessageBox("Stop realplay failed");
		}
		
		LONG lret = PLAY_Stop(0);
		if (lret != 0)
		{
			MessageBox("Play stop failed");
		}
		
		lret = PLAY_CloseStream(0);
		if (lret != 0)
		{
			MessageBox("Close Stream failed");
		}
		
		bret = CLIENT_Logout(m_lLoginID);
		if (!bret) 
		{
			ShowLastMessage();
			MessageBox("Logout failed");
		}
		
		m_bPlaying = FALSE;
		
		GetDlgItem(IDC_SCREEN_PLAYSDK)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_SCREEN_PLAYSDK)->ShowWindow(SW_NORMAL);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -