📄 netsdkdemodlg.h
字号:
// NetSDKDemoDlg.h : header file
//
#if !defined(AFX_NETSDKDEMODLG_H__874C22A9_455C_4113_9954_FDC1528EE15D__INCLUDED_)
#define AFX_NETSDKDEMODLG_H__874C22A9_455C_4113_9954_FDC1528EE15D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "searchrecord.h"
#include "clientState.h"
#include "BtnST.h"
#include "exbutton.h"
#include "systemconfig.h"
#include "PlayWnd.h"
#include "ScreenPannel.h"
#include "PTZPannel.h"
#include "ColorPannel.h"
#include "PlayCtrlPannel.h"
#include "NormalBtnPannel.h"
#include "AdvanceBtnPannel.h"
#include "SaveDataPannel.h"
#include "SelectPannel.h"
#include "RuntimeMsgPannel.h"
#include "IrDlg.h"
#include "NetSDKDemo.h"
/////////////////////////////////////////////////////////////////////////////
// CNetSDKDemoDlg dialog
#define TIMER_KBPS 1999
//画面分割类型
enum{
SPLIT1 = 0,
SPLIT4,
SPLIT9,
SPLIT16,
SPLIT_TOTAL
};
//播放控制类型
enum{
STATUS_STOP,
STATUS_PAUSE,
STATUS_PLAY,
STATUS_STEP,
};
//设置视频参数
enum{
VIDEO_BRIGHT = 0,
VIDEO_CONTRAST,
VIDEO_HUE,
VIDEO_SATURATION,
VIDEO_TOTAL
};
//云台控制操作
enum{
PTZ_START,
PTZ_STOP
};
//监视信息参数
typedef struct _SplitMonitorParam
{
DeviceNode *pDevice; //设备指针
int iChannel; //对应的设备中的通道序号
BOOL isTalkOpen; //是否打开语音对讲
}SplitMonitorParam;
//网络回放信息参数
typedef struct _SplitNetPlayParam
{
// DWORD iFilePos; //文件信息列表position/
FileInfoNode *pFileInfo; //文件信息指针
int iStatus; //播放状态 正常/暂停/快放/慢放
int iPlayPos; //当前播放的位置
}SplitNetPlayParam;
//通过时间回放录象参数
typedef struct _SplitPBByTimeParam
{
DeviceNode *pDevice;
NET_TIME starttime;
NET_TIME endtime;
int nChannel;
int npos;
int iStatus;
}SplitPBByTimeParam;
//多画面预览信息参数
typedef struct _SplitMulitPlayParam
{
DeviceNode *pDevice; //设备指针
}SplitMultiPlayParam;
//轮循监视信息参数
typedef struct _CycleChannelInfo
{
DWORD dwDeviceID;
int iChannel;
}CycleChannelInfo;
typedef struct _SplitCycleParam
{
DeviceNode *pDevice; //设备指针
CPtrList *pChannelList; //轮循通道列表
int iChannelCount; //通道数
int iCurPosition; //当前监视通道在数组里的位置
UINT iInterval; //画面切换间隔时间(秒)
}SplitCycleParam;
class CNetSDKDemoDlg : public CDialog
{
// Construction
int m_connectwaittime; //设置连接等待时间
int m_curScreen; //当前显示画面序号
int m_curSoundSplit; //当前声音输出所在的画面序号
//内部根据设计需要的子功能函数
void *GetCurDeviceInfo(); //获得当前设备列表选择的设备的信息指针
void *FindDeviceInfo(LONG lLoginID, char *sDVRIP,LONG nDVRPort); //根据设备id获得设备信息指针
int GetHandleSplit(LONG lPlayHandle); //根据id,获得当前画面序号
BOOL CheckCurSplitAndClose(); //检查当前画面并关闭图像显示;
BOOL IsCycling(DWORD deviceID, int channelNo); //是否在轮训通道
int GetCurSplitStart(int nScreen, int nSplit); //获取当前画面分割模式的指定画面的起始画面序号
int PlayStop(int iScreen, BOOL bDis = FALSE); //播放停止
//各类更新操作函数
void UpdateVideoCtrl(int nMode); //刷新视频参数控制区
void UpdateDeviceList(); //刷新设备列表
void UpdateDeviceState(void *pDevice, char *pBuf, DWORD dwBufLen); //更新设备的状态
public:
CNetSDKDemoDlg(CWnd* pParent = NULL); // standard constructor
//sxw
CImageList m_theImageList;//树形控件图像列表
HTREEITEM activeItem;//活动子项
HTREEITEM activeparentItem;//活动父项
//用于回调的接口
void DeviceDisConnect(LONG lLoginID, char *sDVRIP,LONG nDVRPort);
void ReceiveRealData(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize);
BOOL ReceiveMessage(LONG lLoginID, LONG lCommand, char *pchDVRIP, LONG nDVRPort,
char *pBuf, DWORD dwBufLen);
void AddDisplayInfo(LONG lLoginID, LONG lPlayHandle, HDC hDC); //叠加字符或图片
void ReceivePlayPos(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize);
//用于删除轮循画面的参数
void DeleteCycleParam(int nScreen);
//设备断开时回调函数,可以用来处理断开后设备列表的更新及设备的删除操作
friend void CALLBACK DisConnectFunc(LONG lLoginID, char *pchDVRIP, LONG nDVRPort, DWORD dwUser);
//监视数据回调函数,可以用来将回调数据保存成文件
friend void CALLBACK RealDataCallBack(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,
DWORD dwBufSize, DWORD dwUser);
//回放数据回调函数,demo里将数据保存成文件
friend int CALLBACK PBDataCallBack(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,
DWORD dwBufSize, DWORD dwUser);
friend void CALLBACK RealDataCallBackEx(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,
DWORD dwBufSize, LONG lParam, DWORD dwUser);
//消息回调处理函数,是对整个sdk应用的回调,用来处理回调出来的报警信息
friend BOOL CALLBACK MessCallBack(LONG lCommand, LONG lLoginID, char *pBuf,
DWORD dwBufLen, char *pchDVRIP, LONG nDVRPort);
//自定义画板回调,可以用来显示通道名称
friend void CALLBACK ChannelAutoDraw(LONG lLoginID, LONG lPlayHandle, HDC hDC, DWORD dwUser);
//播放进度状态回调函数,用来处理进度条显示
friend void CALLBACK PlayCallBack(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, DWORD dwUser);
//两个页面
CClientState m_ClientStateDlg;
// CSystemConfig m_SysConfig;
// Dialog Data
//{{AFX_DATA(CNetSDKDemoDlg)
enum { IDD = IDD_NETSDKDEMO_DIALOG };
CButtonST m_btn_down;
CButtonST m_btn_cnl;
CButtonST m_btn_vod;
CButtonST m_btn_up;
CButtonST m_btn_right;
CButtonST m_btn_ok;
CButtonST m_btn_left;
CButtonST m_btn_fos;
CButtonST m_btn_dvr;
CButtonST m_btn_ptz;
CButtonST m_btn_setup;
CButtonST m_btn_min;
CButtonST m_btn_close;
CStatic m_logopic;
CStatic m_toppic;
CStatic m_rightpic;
CStatic m_leftpic;
CStatic m_rmtctl;
CExButton m_ptz_righttop;
CExButton m_ptz_rightdown;
CExButton m_ptz_lefttop;
CExButton m_ptz_leftdown;
CExButton m_zoom_wide;
CExButton m_zoom_tele;
CExButton m_focus_near;
CExButton m_focus_far;
CExButton m_iris_open;
CExButton m_iris_close;
CExButton m_ptz_up;
CExButton m_ptz_right;
CExButton m_ptz_left;
CExButton m_ptz_down;
CComboBox m_channelsel;
CTreeCtrl m_devicelist;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -