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

📄 sampledlg.cpp

📁 TM8000硬盘录像机客户端编程文档和Demo源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// SAMPLEDlg.cpp : implementation file
//

#include "stdafx.h"
#include "SAMPLE.h"
#include "SAMPLEDlg.h"
#include  <winsock2.h>
#include "NetRemoteCtrlDlg.h"
#include "NativeDlg.h"
#include "ConSDK.h"
#include "TalkDVRDlg.h"
//#include "Mmsystem.h"


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


OUT_INFO		g_OutInfo[MAXOUTNO];
USER_DVR_PARAMETER* Con_pDVRPara;
DWORD   nDriverMask ;
BOOL DispImage[MAXOUTNO];
BOOL RecImage[MAXOUTNO];
BOOL IFrameRecImage[MAXOUTNO];
CTalkDVRDlg		*pTalkMan;
CNetRemoteCtrlDlg *pNetRemoteCtlDlg;
int nHourStart,nMinuteStart,nHourEnd,nMinuteEnd;
char			logBuf[64*1024];
BOOL			isContinue = 0;
int pFrameCount = 0;
int g_pFrameCount = 0;
LoginParam m_LoginParam;

TM8100_NET_NODE  *pNetNodeHead ;
extern BOOL ENGLISH;
/////////////////////////////////////////////////////////////////////////////
// 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)

//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSAMPLEDlg dialog

CSAMPLEDlg::CSAMPLEDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSAMPLEDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSAMPLEDlg)
	m_imageno =2;
	m_monitor =1;
	m_date =8;
	m_hour = 8;
	m_minute =42;
	m_month =9;
	m_year =2;
	m_portno = 1;
	m_endhour = 8;
	m_endminute =42;
	m_Passwd = _T("888888");
	m_ServPort=8202;
	m_IP = _T("192.168.55.222");
	m_UpdateFile = _T("");
	m_state = _T("");
	m_User = _T("123");
	m_ServerPort = 5000;
	m_UseTrans = FALSE;
	m_LocalPort = 5000;
	m_MulticastPort = 6000;
	m_ServerPasswd = _T("123");
	m_SetPassword = _T("");
	m_P1 = FALSE;
	m_P2 = FALSE;
	m_P3 = FALSE;
	m_P4 = FALSE;
	m_P5 = FALSE;
	m_P6 = FALSE;
	m_P7 = FALSE;
	m_P8 = FALSE;
	m_P9 = FALSE;
	m_P10 = FALSE;
	m_P11 = FALSE;
	m_P12 = FALSE;
	m_P13 = FALSE;
	m_P14 = FALSE;
	m_P15 = FALSE;
	m_P16 = FALSE;
	m_PanProtocol = _T("");
	m_PFrameCount = 0;
	m_RemotePlaySpeed=3;
	hcount=0;
	m_UpdatePort = 5028;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	
	Con_pDVRPara=NULL;
    pNetNodeHead = NULL ;
	pNetRemoteCtlDlg=NULL;
	m_pBackFile = NULL;
	m_nCurDVRType = 0;
}

void CSAMPLEDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSAMPLEDlg)
	DDX_Control(pDX, IDC_EDITPFRAMECOUNT, m_Con_PFrameCount);
	DDX_Control(pDX, IDC_COMBO_SETIOMODE, m_SetIoMode);
	DDX_Control(pDX, IDC_COMBO_SETUSER, m_SetUser);
	DDX_Control(pDX, IDC_LIST_DISKINFO, m_DiskInfo);
	DDX_Control(pDX, IDC_VIDEO3, m_Video3);
	DDX_Control(pDX, IDC_MULTICAST_IP, m_cMulticastIp);
	DDX_Control(pDX, IDC_IP_SERVER, m_cIpServer);
	DDX_Control(pDX, IDC_VIDEO2, m_Video2);
	DDX_Control(pDX, IDC_VIDEO1, m_Video1);
	DDX_Control(pDX, IDC_LIST1, m_AlarmList);
	DDX_Control(pDX, IDC_TREE1, m_NetTree);
	DDX_Text(pDX, IDC_EDITIMAGENO, m_imageno);
	DDX_Text(pDX, IDC_EDITDATE, m_date);
	DDX_Text(pDX, IDC_EDITHOUR, m_hour);
	DDX_Text(pDX, IDC_EDITMINUTE, m_minute);
	DDX_Text(pDX, IDC_EDITMONTH, m_month);
	DDX_Text(pDX, IDC_EDITYEAR, m_year);
	DDV_MinMaxByte(pDX, m_year, 0, 99);
	DDX_Text(pDX, IDC_EDITPORTNO, m_portno);
	DDX_Text(pDX, IDC_EDITENDHOUR, m_endhour);
	DDX_Text(pDX, IDC_EDITENDMINUTE, m_endminute);
	DDX_Text(pDX, IDC_EDITPASSWD, m_Passwd);
	DDX_Text(pDX, IDC_EDITSERVPORT,m_ServPort);
	DDX_Text(pDX, IDC_EDITIP, m_IP);

	DDX_Text(pDX, IDC_EDIT_FILE, m_UpdateFile);
	DDX_Text(pDX, IDC_STATIC_STATE, m_state);
	DDX_Text(pDX, IDC_EDIT_USER, m_User);
	DDX_Text(pDX, IDC_EDIT_SERVERPORT, m_ServerPort);
	DDX_Check(pDX, IDC_CHK_USETRANSMIT, m_UseTrans);
	DDX_Text(pDX, IDC_EDIT_LOCALPORT, m_LocalPort);
	DDX_Text(pDX, IDC_EDIT_MULTICASTPORT, m_MulticastPort);
	DDX_Text(pDX, IDC_EDIT_SERVERPASS, m_ServerPasswd);
	DDX_Text(pDX, IDC_EDIT_SETPASS, m_SetPassword);
	DDX_Check(pDX, IDC_CHECK_P1, m_P1);
	DDX_Check(pDX, IDC_CHECK_P2, m_P2);
	DDX_Check(pDX, IDC_CHECK_P3, m_P3);
	DDX_Check(pDX, IDC_CHECK_P4, m_P4);
	DDX_Check(pDX, IDC_CHECK_P5, m_P5);
	DDX_Check(pDX, IDC_CHECK_P6, m_P6);
	DDX_Check(pDX, IDC_CHECK_P7, m_P7);
	DDX_Check(pDX, IDC_CHECK_P8, m_P8);
	DDX_Check(pDX, IDC_CHECK_P9, m_P9);
	DDX_Check(pDX, IDC_CHECK_P10, m_P10);
	DDX_Check(pDX, IDC_CHECK_P11, m_P11);
	DDX_Check(pDX, IDC_CHECK_P12, m_P12);
	DDX_Check(pDX, IDC_CHECK_P13, m_P13);
	DDX_Check(pDX, IDC_CHECK_P14, m_P14);
	DDX_Check(pDX, IDC_CHECK_P15, m_P15);
	DDX_Check(pDX, IDC_CHECK_P16, m_P16);
	DDX_Text(pDX, IDC_EDIT_PANPROTOCOL, m_PanProtocol);	
	DDX_Text(pDX, IDC_EDITPFRAMECOUNT, m_PFrameCount);
	DDX_Text(pDX, IDC_EDITUPDATEPORT, m_UpdatePort);
	DDV_MinMaxInt(pDX, m_UpdatePort, 1, 65535);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CSAMPLEDlg, CDialog)
	//{{AFX_MSG_MAP(CSAMPLEDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_MESSAGE(WM_RECEIVENET_MSG,OnNetMsgPro)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
	ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
	ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
	ON_BN_CLICKED(IDC_BUTTON9, OnButton9)
	ON_BN_CLICKED(IDC_BUTTON10, OnButton10)
	ON_BN_CLICKED(IDC_BUTTON11, OnButton11)
	ON_BN_CLICKED(IDC_BUTTON12, OnButton12)
	ON_BN_CLICKED(IDC_BUTTON13, OnButton13)
	ON_BN_CLICKED(IDC_BUTTON14, OnButton14)
	ON_BN_CLICKED(IDC_BUTTON15, OnButton15)
	ON_BN_CLICKED(IDC_BUTTON16, OnButton16)
	ON_BN_CLICKED(IDC_BUTTON17, OnButton17)
	ON_BN_CLICKED(IDC_BUTTON18, OnButton18)
	ON_BN_CLICKED(IDC_BUTTON19, OnButton19)
	ON_BN_CLICKED(IDC_BUTTON20, OnButton20)
	ON_BN_CLICKED(IDC_BUTTON21, OnButton21)
	ON_BN_CLICKED(IDC_BUTTON22, OnButton22)
	ON_BN_CLICKED(IDC_BUTTON23, OnButton23)
	ON_BN_CLICKED(IDC_BUTTON28, OnButton28)
	ON_BN_CLICKED(IDC_BUTTON29, OnButton29)
	ON_BN_CLICKED(IDC_BUTTON30, OnButton30)
	ON_BN_CLICKED(IDC_BUTTON31, OnButton31)
	ON_BN_CLICKED(IDC_BUTTON32, OnButton32)
	ON_BN_CLICKED(IDC_BUTTON33, OnButton33)
	ON_BN_CLICKED(IDC_BUTTON34, OnButton34)
	ON_BN_CLICKED(IDC_BUTTON35, OnButton35)
	ON_BN_CLICKED(IDC_BUTTON36, OnButton36)
	ON_BN_CLICKED(IDC_BUTTON37, OnButton37)
	ON_BN_CLICKED(IDC_BUTTON38, OnButton38)
	ON_BN_CLICKED(IDC_BUTTON39, OnButton39)
	ON_BN_CLICKED(IDC_BUTTON40, OnButton40)
	ON_BN_CLICKED(IDC_BUTTON41, OnButton41)
	ON_BN_CLICKED(IDC_BUTTON44, OnButton44)
	ON_BN_CLICKED(IDC_BUTTON43, OnButton43)
	ON_BN_CLICKED(IDC_BUTTON42, OnButton42)
	ON_BN_CLICKED(IDC_BUTTON45, OnButton45)
	ON_BN_CLICKED(IDC_BUTTON46, OnButton46)
	ON_BN_CLICKED(IDC_BUTTON49, OnButton49)
	ON_BN_CLICKED(IDC_BUTTON51, OnButton51)
	ON_BN_CLICKED(IDC_BUTTON52, OnButton52)
	ON_BN_CLICKED(IDC_BUTTON53, OnButton53)
	ON_BN_CLICKED(IDC_BUTTON54, OnButton54)
	ON_BN_CLICKED(IDC_BUTTON55, OnButton55)
	ON_BN_CLICKED(IDC_BUTTON56, OnButton56)
	ON_BN_CLICKED(IDC_BUTTON57, OnButton57)
	ON_WM_CLOSE()
	ON_WM_MOVE()
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
	ON_BN_CLICKED(IDC_RADIO_NONE, OnRadioNone)
	ON_BN_CLICKED(IDC_RADIO_CHANNEL1, OnRadioChannel1)
	ON_BN_CLICKED(IDC_RADIO_CHANNEL2, OnRadioChannel2)
	ON_BN_CLICKED(IDC_RADIO_CHANNEL3, OnRadioChannel3)
	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER1, OnReleasedcaptureSlider1)
	ON_BN_CLICKED(IDC_CHK_USETRANSMIT, OnChkUsetransmit)
	ON_BN_CLICKED(IDC_BTN_GETRECSTATE, OnBtnGetrecstate)
	ON_BN_CLICKED(IDC_BTN_GETVIDEOLOST, OnBtnGetvideolost)
	ON_BN_CLICKED(IDC_BTN_GETMOVESTATE, OnBtnGetmovestate)
	ON_BN_CLICKED(IDC_BTN_GETSENSOR, OnBtnGetsensor)
	ON_BN_CLICKED(IDC_BTN_GETDISKINFO, OnBtnGetdiskinfo)
	ON_BN_CLICKED(IDC_BTN_RESTART, OnBtnRestart)
	ON_BN_CLICKED(IDC_BTN_SETPASSWORD, OnBtnSetpassword)
	ON_CBN_SELCHANGE(IDC_COMBO_SETIOMODE, OnSelchangeComboSetiomode)
	ON_BN_CLICKED(IDC_CHECK_P1, OnCheckP1)
	ON_BN_CLICKED(IDC_CHECK_P2, OnCheckP2)
	ON_BN_CLICKED(IDC_CHECK_P3, OnCheckP3)
	ON_BN_CLICKED(IDC_CHECK_P4, OnCheckP4)
	ON_BN_CLICKED(IDC_CHECK_P5, OnCheckP5)
	ON_BN_CLICKED(IDC_CHECK_P6, OnCheckP6)
	ON_BN_CLICKED(IDC_CHECK_P7, OnCheckP7)
	ON_BN_CLICKED(IDC_CHECK_P8, OnCheckP8)
	ON_BN_CLICKED(IDC_CHECK_P9, OnCheckP9)
	ON_BN_CLICKED(IDC_CHECK_P10, OnCheckP10)
	ON_BN_CLICKED(IDC_CHECK_P11, OnCheckP11)
	ON_BN_CLICKED(IDC_CHECK_P12, OnCheckP12)
	ON_BN_CLICKED(IDC_CHECK_P13, OnCheckP13)
	ON_BN_CLICKED(IDC_CHECK_P14, OnCheckP14)
	ON_BN_CLICKED(IDC_CHECK_P15, OnCheckP15)
	ON_BN_CLICKED(IDC_CHECK_P16, OnCheckP16)
	ON_BN_CLICKED(IDC_BTN_SETPAN, OnBtnSetpan)
	ON_BN_CLICKED(IDC_BTN_GETPAN, OnBtnGetpan)
	ON_BN_CLICKED(IDC_BTN_GETENVELOP, OnBtnGetenvelop)
	ON_BN_CLICKED(IDC_GETHEARTBEATCONDITION, OnGetheartbeatcondition)
 	ON_BN_CLICKED(IDC_DOMEBETACONTROL, OnDomebetacontrol)
	ON_BN_CLICKED(IDC_BUTTON24, OnButton224)
	ON_COMMAND(IDD_SLOW_HALFSPEED, OnSlowHalfspeed)
	ON_COMMAND(IDD_SLOW_QUARTEREDSPEED, OnSlowQuarteredspeed)
	ON_COMMAND(ID_FAST_1X, OnFast1x)
	ON_COMMAND(ID_FAST_2X, OnFast2x)
	ON_COMMAND(IDD_SLOW_HALFQUARTEREDSPEED, OnSlowHalfquarteredspeed)
	ON_BN_CLICKED(IDC_BUTTON500, OnButton500)
	ON_BN_CLICKED(IDC_BUTTON58, OnButton580)
	ON_BN_CLICKED(IDC_BUTTON59, OnButton590)
	ON_WM_TIMER()
	ON_EN_CHANGE(IDC_EDIT_SETPASS, OnChangeEditSetpass)
	ON_BN_CLICKED(IDC_STATIC_STATE, OnStaticState)
	ON_EN_CHANGE(IDC_EDITYEAR, OnChangeEdityear)
	ON_EN_CHANGE(IDC_EDIT_PANPROTOCOL, OnChangeEditPanprotocol)
	ON_COMMAND(ID_PAUSE, OnPause)
	ON_COMMAND(ID_PACE, OnPace)
	ON_COMMAND(ID_FASTFORWARD, OnFastforward)
	ON_BN_CLICKED(IDC_BUTTON25, OnButton25)
	ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
	ON_BN_CLICKED(IDC_BUTTON_PTZSPEED, OnButtonPtzspeed)
	ON_BN_CLICKED(IDC_BUTTON_PTZLEFT, OnButtonPtzleft)
	ON_BN_CLICKED(IDC_BUTTON_PTZRIGHT, OnButtonPtzright)
	ON_BN_CLICKED(IDC_BUTTON_PTZCALL, OnButtonPtzcall)
	ON_BN_CLICKED(IDC_STATIC_DEVTYPE, OnStaticDevtype)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSAMPLEDlg message handlers

int CSAMPLEDlg::CheckUser(unsigned long nIpAddr,LPCTSTR UserName,LPCTSTR Passwd)
{
	if(strcmp(UserName,"123")==0&&strcmp(Passwd,"123")==0)
		return 1;
	else
		return 0;
}


BOOL CSAMPLEDlg::OnInitDialog()
{
	int i;

	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
	
	for(i=0;i<MAXOUTNO;i++)
	{
		memset(&g_OutInfo[i],0,sizeof(OUT_INFO));
		DispImage[i]=FALSE;
		RecImage[i]=FALSE;
		IFrameRecImage[i]=FALSE;

	}
	// TODO: Add extra initialization here
	//g_ConSDK=new CConSDK();
	HICON     hIcon1,  hIcon2 ;
	hIcon1 = AfxGetApp()->LoadIcon(IDR_SIGNALNO_ICON) ;
	hIcon2 = AfxGetApp()->LoadIcon(IDR_SINGALHV_ICON) ;
	
	m_TreeImage.Create(16, 16, ILC_MASK, 2, 2) ;
	m_TreeImage.Add(hIcon1) ;
	m_TreeImage.Add(hIcon2) ;
	m_NetTree.SetImageList(&m_TreeImage,TVSIL_NORMAL);
	Con_Initial(this->m_hWnd,WM_RECEIVENET_MSG,'d');//此处假定D盘为备份文件的盘符
	if(ENGLISH)
	{
		hTreeRoot = m_NetTree.InsertItem(_T("Net"),0,0);//English
	}
	else
	{
		hTreeRoot = m_NetTree.InsertItem(_T("网络"),0,0);//Chinese
	}
    FindAllDiskDriver();

	
	PB_IniPlayer(&g_OutInfo[0].hImage,GetDlgItem(IDC_VIDEO1)->m_hWnd);//pImageDlg1->m_hWnd);
	PB_OpenStream(g_OutInfo[0].hImage);
	PB_StartJitterFilter(g_OutInfo[0].hImage,FALSE);
	PB_SetupJitterFilterFrameCount(g_OutInfo[0].hImage,0,100);
	
	PB_IniPlayer(&g_OutInfo[1].hImage,GetDlgItem(IDC_VIDEO2)->m_hWnd,TRUE);//pImageDlg1->m_hWnd);
	PB_OpenStream(g_OutInfo[1].hImage);
	PB_StartJitterFilter(g_OutInfo[1].hImage,FALSE);
	PB_SetupJitterFilterFrameCount(g_OutInfo[1].hImage,0,100);
	
	PB_IniPlayer(&g_OutInfo[2].hImage,GetDlgItem(IDC_VIDEO3)->m_hWnd);//pImageDlg1->m_hWnd);
	PB_OpenStream(g_OutInfo[2].hImage);
	PB_StartJitterFilter(g_OutInfo[2].hImage,FALSE);
	PB_SetupJitterFilterFrameCount(g_OutInfo[2].hImage,0,100);
	
	Con_RegRealImageProc(RealImageCallBack);
	Con_RegRemoteRecFile(RemoteRecDataCallBack);
	
	((CButton *)GetDlgItem(IDC_RADIO_LAN))->SetCheck(1);
	((CButton *)GetDlgItem(IDC_RADIO_LANUP))->SetCheck(1);
	pNetRemoteCtlDlg=new CNetRemoteCtrlDlg(this);
	pNetRemoteCtlDlg->Create(this);
	pTalkMan=new CTalkDVRDlg(this);
	pTalkMan->Create(this);
	((CButton *)GetDlgItem(IDC_RADIO_NONE))->SetCheck(1);
	((CSliderCtrl *)GetDlgItem(IDC_SLIDER1))->SetRange(0,0,TRUE);
	
	m_cIpServer.SetAddress(192,168,55,83);
	m_cMulticastIp.SetAddress(234,5,6,7);
	m_SetUser.SetCurSel(0);
	m_SetIoMode.SetCurSel(0);


	popMenu.LoadMenu(IDR_CTRLPLAYSPEED);
	m_12XCheck.LoadBitmap(IDB_BITMAP_12X);
	m_12XUnCheck.LoadBitmap(IDB_BITMAP_12XU);
	m_14XCheck.LoadBitmap(IDB_BITMAP_14X);
	m_14XUnCheck.LoadBitmap(IDB_BITMAP_14XU);
	m_18XCheck.LoadBitmap(IDB_BITMAP_18X);
	m_18XUnCheck.LoadBitmap(IDB_BITMAP_18XU);
	m_1XCheck.LoadBitmap(IDB_BITMAP_1X);
	m_1XUnCheck.LoadBitmap(IDB_BITMAP_1XU);
	m_2XCheck.LoadBitmap(IDB_BITMAP_2X);
	m_2XUnCheck.LoadBitmap(IDB_BITMAP_2XU);
	m_4XCheck.LoadBitmap(IDB_BITMAP_4X);
	m_4XUnCheck.LoadBitmap(IDB_BITMAP_4XU);
	m_8XCheck.LoadBitmap(IDB_BITMAP_8X);
	m_8XUnCheck.LoadBitmap(IDB_BITMAP_8XU);
	m_PauseCheck.LoadBitmap(IDB_BITMAP_PAUSE);
	m_PauseUnCheck.LoadBitmap(IDB_BITMAP_PAUSEU);
	m_PaceCheck.LoadBitmap(IDB_BITMAP_PACE);
	m_PaceUnCheck.LoadBitmap(IDB_BITMAP_PACEU);
	m_FastCheck.LoadBitmap(IDB_BITMAP_FAST);
	m_FastUnCheck.LoadBitmap(IDB_BITMAP_FASTU);

	SetDlgItemText(IDC_STATIC_GETPARA,"");
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CSAMPLEDlg::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 CSAMPLEDlg::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();
	}
}

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

void CSAMPLEDlg::DelItem(HTREEITEM hItem)
{
	if(hItem == NULL)
		return ;
	HTREEITEM  Temp;
	Temp = m_NetTree.GetChildItem (hItem);
	while (Temp != NULL)
	{
		if(! m_NetTree.ItemHasChildren (Temp))	// 没有子结点
		{
			m_NetTree.DeleteItem (Temp);
			Temp = m_NetTree.GetChildItem (hItem);
			continue;
		}
		Temp = m_NetTree.GetChildItem (Temp);
	}
}

void CSAMPLEDlg::CloseDVR(unsigned long nIpAddr,unsigned short nServPort)
{
	TM8100_NET_NODE *cur;
	int i;
	cur=pNetNodeHead;
	while(cur!=NULL)
	{
		if(cur->ipAddr==nIpAddr&&cur->nServPort==nServPort)
		{
			if(cur->hNodeTree)
			{
				DelItem(cur->hNodeTree);
				m_NetTree.SetItemImage(cur->hNodeTree,0,0);
				cur->hRealTimeImageNodeTree = NULL ;
				for (i=0;i<PORTNUM;i++)
					cur->hRealTimeImagePort[i] = NULL ;
				cur->pRecDateHead = NULL ;
				cur->nRealMulticast = 0 ;
				break;
			}
		}
		cur=cur->next;
	}
}

void CSAMPLEDlg::OnNetMsgPro(WPARAM wParam, LPARAM lParam)

⌨️ 快捷键说明

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