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

📄 clientdemodlg.cpp

📁 基于海康威视DVR的完整远程监控程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// clientdemoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "clientdemo.h"
#include "clientdemoDlg.h"
#include "HikVisionSdk.h"

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

#define WM_MYCOMMAND WM_USER+1


int count;

HWND  hWnd1,hWnd2,hWnd3,hWnd4,hWnd5,hWnd6,hWnd7,hWnd8;

//int filecount=20;

DWORD num1;
UINT timers;
int ipos=0;
BOOL bpos=FALSE;
RECT rinit;

CRect m_OldRect;

int filecount=0;


UINT filetimer=0;

int  capcount=0;

CRect orirc;

BOOL blarged=FALSE;

WORD testnum=0;

BOOL bmode=FALSE;

BOOL g_bCapPic=FALSE;

UINT remains=0;

long channelcount;

BOOL m_ifusecard[4];//whether use hardware to decode or not 
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CClientdemoDlg dialog

CClientdemoDlg::CClientdemoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CClientdemoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CClientdemoDlg)
	m_linktype = 0;
	m_ipadd = _T("192.0.0.43");
	m_shownum = 1;
	m_delaytype = -1;
	m_showmode = -1;
	m_bframenum = -1;
	m_frameshow = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CClientdemoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CClientdemoDlg)
	DDX_Control(pDX, IDC_STATIC8, m_video8);
	DDX_Control(pDX, IDC_STATIC7, m_video7);
	DDX_Control(pDX, IDC_STATIC6, m_video6);
	DDX_Control(pDX, IDC_STATIC5, m_video5);
	DDX_Radio(pDX, IDC_TCP, m_linktype);
	DDX_Text(pDX, IDC_IPADDRESS, m_ipadd);
	DDX_Text(pDX, IDC_SHOWNUM, m_shownum);
	DDX_Radio(pDX, IDC_DELAY1, m_delaytype);
	DDX_Radio(pDX, IDC_SHOWMODE1, m_showmode);
	DDX_Radio(pDX, IDC_RADIOBFRAM0, m_bframenum);
	DDX_Text(pDX, IDC_STATICFRAME, m_frameshow);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CClientdemoDlg, CDialog)
	ON_MESSAGE(WM_MYCOMMAND,OnMyCommand)
	//{{AFX_MSG_MAP(CClientdemoDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_STATIC5, OnStatic5)
	ON_BN_CLICKED(IDC_STATIC7, OnStatic7)
	ON_BN_CLICKED(IDC_STATIC6, OnStatic6)
	ON_BN_CLICKED(IDC_STATIC8, OnStatic8)
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
	ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
	ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
	ON_WM_HSCROLL()
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_BUTTON9, OnButton9)
	ON_BN_CLICKED(IDC_SHOWMODE2, OnShowmode2)
	ON_BN_CLICKED(IDC_SHOWMODE1, OnShowmode1)
	ON_BN_CLICKED(IDC_BUTTON10, OnButton10)
	ON_BN_CLICKED(IDC_RADIOBFRAM0, OnRadiobfram0)
	ON_BN_CLICKED(IDC_RADIOBFRAM1, OnRadiobfram1)
	ON_BN_CLICKED(IDC_RADIOBFRAM2, OnRadiobfram2)
	ON_WM_MOVE()
	ON_BN_CLICKED(IDC_BUTTON11, OnButton11)
    ON_CONTROL(STN_DBLCLK,IDC_STATIC5,OnDbStatic1)
    ON_CONTROL(STN_DBLCLK,IDC_STATIC6,OnDbStatic2)
    ON_CONTROL(STN_DBLCLK,IDC_STATIC7,OnDbStatic3)
    ON_CONTROL(STN_DBLCLK,IDC_STATIC8,OnDbStatic4)
	ON_BN_CLICKED(IDC_BUTTON12, OnButton12)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CClientdemoDlg message handlers

void CALLBACK CapPicFun(long nPort,\
						   char * pBuf,long nSize,\
						   long nWidth,long nHeight,\
						   long nStamp,long nType,long nReceaved)
{
	if(!((g_bCapPic) && (nPort == ipos)))
		return;
	CString csFile;
	switch(nType)
	{
	case T_UYVY:
		csFile="c:\\uyvy.bmp";
		break;
	case T_YV12:
		csFile="c:\\yv12.bmp";
		break;
	case T_RGB32:
		csFile="c:\\rgb.bmp";
		break;
	default: 
		return ;
	}
	MP4_ClientSavePicFile(pBuf,nSize,nWidth,nHeight,nType,csFile.GetBuffer(csFile.GetLength()));	
	g_bCapPic=FALSE;
	
}


BOOL CClientdemoDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	m_ifusecard[0] = TRUE;
	m_ifusecard[1] = TRUE;
	m_ifusecard[2] = TRUE;
	m_ifusecard[3] = TRUE;


	MP4_ClientSetNetPort(5050,6050);

	MP4_ClientStartup(WM_MYCOMMAND,this->m_hWnd);


//	m_playtryl.SetRange(1,100,TRUE);
	m_delaytype	=3;
	m_showmode = 0;
	m_bframenum = 0;
	UpdateData(FALSE);
	nn1=nn2=nn3=nn4=-1;

	ShowWindow(SW_SHOW);

	MP4_ClientInitDevice_Card(&channelcount);
	MP4_ClientInitDDraw_Card(this->m_hWnd,0xff00ff);	
	// TODO: Add extra initialization here

	for (int i=0;i<channelcount;i++)
	{
		HW_ChannelOpen(i,&hChannel[i]);
		
	}
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CClientdemoDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CClientdemoDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
	MP4_ClientRestoreSurface_Card();
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CClientdemoDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}


void CALLBACK ReadDataCallBack1(DWORD nPort,UCHAR *pPacketBuffer,DWORD nPacketSize)
{

}



void CClientdemoDlg::OnButton1() 
{

	CWnd* pButton1;
	CString csFile;

	CRect recttemp;

	DWORD dtemp;
	dtemp = channelcount;

	pButton1 = (CButton*)GetDlgItem(IDC_BUTTON1);
	pButton1->EnableWindow(FALSE);


//	if (blarged)
//		OnDbStatic1();

	UpdateData(TRUE);

	nn1=nn2=nn3=nn4 = -1;

	int itemp = m_shownum;
	char ips[256];
	
	sprintf(ips,"%s",m_ipadd);

	if (m_ifusecard[0])
	{
		CLIENT_CARDINFO aa5;
		aa5.m_bRemoteChannel = 0;
		switch(m_linktype)
		{
		case 0:
			aa5.m_bSendMode = TCPMODE;
			break;
		case 1:
			aa5.m_bSendMode = UDPMODE;
			break;
		case 2:
			aa5.m_bSendMode = MULTIMODE;
			break;
		case 3:
			aa5.m_bSendMode = DIALING;
			break;
		default:
			aa5.m_bSendMode = TCPMODE;
			break;
		}
	//	aa5.m_bSendMode = DIAL;

		m_video5.GetWindowRect(&recttemp);

		ScreenToClient((LPPOINT)&recttemp);
		ScreenToClient((LPPOINT)&recttemp+1);

		aa5.m_sIPAddress = ips;//"192.0.0.125";
	//	aa5.m_hShowVideo = hWnd5;

		aa5.m_sUserName = "123";
		aa5.m_sUserPassword="w";
		aa5.m_bUserCheck = TRUE;

		aa5.displaypara.nLeft = recttemp.left;
		aa5.displaypara.nTop = recttemp.top;
		aa5.displaypara.nWidth = recttemp.Width();
		aa5.displaypara.nHeight = recttemp.Height();
		aa5.displaypara.bToScreen = 1;
		aa5.displaypara.bToVideoOut = 1;
//		aa5.displaypara.format =vfYUV422Planar;
		aa5.displaypara.nReserved = 0;
	//	aa5.displaypara.VideoRGBYUVFormat = 

		MP4_ClientSetTTL(64);
		HW_SetStreamOpenMode(hChannel[0],1);
		nn1 = MP4_ClientStart_Card(&aa5,0,NULL);
		if (nn1 == -1)
		{
			MessageBox("error");
			return;
		}

	}
	else
	{
		CLIENT_VIDEOINFO aa5;

		hWnd5 = m_video5.GetSafeHwnd();//
		aa5.m_bRemoteChannel = 0;
		switch(m_linktype)
		{
		case 0:
			aa5.m_bSendMode = TCPMODE;
			break;
		case 1:
			aa5.m_bSendMode = UDPMODE;
			break;
		case 2:
			aa5.m_bSendMode = MULTIMODE;
			break;
		case 3:
			aa5.m_bSendMode = DIALING;
			break;
		default:
			aa5.m_bSendMode = TCPMODE;
			break;
		}
	//	aa5.m_bSendMode = DIAL;


		aa5.m_sIPAddress = ips;//"192.0.0.125";
		aa5.m_hShowVideo = hWnd5;

		aa5.m_sUserName = "123";
		aa5.m_sUserPassword="w";
		aa5.m_bUserCheck = TRUE;

		MP4_ClientSetTTL(64);
		nn1 = MP4_ClientStart(&aa5,NULL);
		if (nn1 == -1)
		{
			MessageBox("error");
			return;
		}
		switch(m_delaytype)
		{
		case 0://很流畅
			MP4_ClientSetBufferNum(nn1,30);
			MP4_ClientSetPlayDelay(nn1,580);
			break;
		case 1:
			MP4_ClientSetBufferNum(nn1,15);
			MP4_ClientSetPlayDelay(nn1,40);
			break;
		case 2:
			MP4_ClientSetBufferNum(nn1,15);
			MP4_ClientSetPlayDelay(nn1,0);
			break;
		case 3:
			MP4_ClientSetBufferNum(nn1,0);
			MP4_ClientSetPlayDelay(nn1,0);
			break;
		}


	//	MP4_ClientThrowBFrame(nn1,m_bframenum);
		MP4_ClientSetCapPicCallBack(nn1,CapPicFun);


	}


	itemp --;
	if (itemp<=0)
		goto GOTOEND;

	dtemp --;
	if (dtemp<=0)
		goto GOTOEND;


	Sleep(200);


	if (m_ifusecard[1])
	{
		CLIENT_CARDINFO aa6;
		hWnd6 = m_video6.GetSafeHwnd();//
		aa6.m_bRemoteChannel =1;
		switch(m_linktype)
		{
		case 0:
			aa6.m_bSendMode = TCPMODE;
			break;
		case 1:
			aa6.m_bSendMode = UDPMODE;
			break;
		case 2:
			aa6.m_bSendMode = MULTIMODE;
			break;
		case 3:
			aa6.m_bSendMode = DIALING;
			break;
		default:
			aa6.m_bSendMode = TCPMODE;
			break;
		}


		m_video6.GetWindowRect(&recttemp);

		ScreenToClient((LPPOINT)&recttemp);
		ScreenToClient((LPPOINT)&recttemp+1);

		aa6.m_sIPAddress = ips;//"192.0.0.125";
	//	aa5.m_hShowVideo = hWnd5;

		aa6.m_sUserName = "123";
		aa6.m_sUserPassword="w";
		aa6.m_bUserCheck = TRUE;

		aa6.displaypara.nLeft = recttemp.left;
		aa6.displaypara.nTop = recttemp.top;
		aa6.displaypara.nWidth = recttemp.Width();
		aa6.displaypara.nHeight = recttemp.Height();
		aa6.displaypara.bToScreen = 1;
		aa6.displaypara.bToVideoOut = 1;
//		aa6.displaypara.format =vfYUV422Planar;
		aa6.displaypara.nReserved = 0;
	//	MP4_ClientSetTTL(64);
		HW_SetStreamOpenMode(hChannel[1],1);

		nn2 = MP4_ClientStart_Card(&aa6,1,NULL);
		if (nn2 == -1)
		{
			MessageBox("error");
			return;
		}
	}
	else
	{
		CLIENT_VIDEOINFO aa6;

		hWnd6 = m_video6.GetSafeHwnd();//
		aa6.m_bRemoteChannel =1;
		switch(m_linktype)
		{

⌨️ 快捷键说明

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