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

📄 dvrmanagerdlg.cpp

📁 实时监控
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// DvrManagerDlg.cpp : implementation file
//

#include "stdafx.h"
#include "DvrManager.h"
#include "DvrManagerDlg.h"
#include "utils/common.h"
#include "popup_menu.h"
#include "click_btn.h"
#include "reg.h"

#ifdef _DEBUG
#define new DEBUG_NEW

#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

LPCTSTR rvLastVWMode = _T("VWMode");
extern LPCTSTR rvBackground;

// in "ver.cpp"
//extern LPCTSTR VERSION;

struct __version{};

#ifdef __CHS__
#define VERSION _T("版本 3.6.0615")
#else
#define VERSION  _T("ver 3.6.0615")
#endif

#define H263	0
#define MPEG4	1

#define DECODER MPEG4

#if DECODER == MPEG4
#define DECODE_LIB _T("_h264")
#pragma message(" \n")
#pragma message("*提示: 采用 MPEG4 解码库...\n")
#pragma message(" \n")
ULONG mpeg4 = TRUE;
#else
#define DECODE_LIB _T("_mpeg4")
#pragma message(" \n")
#pragma message("*提示: 采用 H.263 解码库...\n")
#pragma message(" \n")
ULONG mpeg4 = FALSE;
#endif

FILE   *fwangmx = NULL ;
/////////////////////////////////////////////////////////////////////////////
// CDvrManagerDlg dialog
void full_scr(CWnd* wnd)
{
	if(!is_window(wnd))
		return;
	
	int cx = GetSystemMetrics(SM_CXSCREEN);
	int cy = GetSystemMetrics(SM_CYSCREEN);
	
	CRect rc(0,0,cx,cy);
	wnd->MoveWindow(rc);
}

//##ModelId=3F90BABA0216
CDvrManagerDlg::CDvrManagerDlg(CWnd* pParent /*=NULL*/)
	: CBDialog(CDvrManagerDlg::IDD, pParent), mgr(&mgr4), cur_right(NULL)
	, accel(NULL), hide_alarm(false)
{
	//{{AFX_DATA_INIT(CDvrManagerDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	auto_switch_timer = 0 ;
	last_mgr_mode = 0;
}

//##ModelId=3F90BABA025C
void CDvrManagerDlg::DoDataExchange(CDataExchange* pDX)
{
	CBDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDvrManagerDlg)
	DDX_Control(pDX, ID_VERSION, m_version);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDvrManagerDlg, CBDialog)
	//{{AFX_MSG_MAP(CDvrManagerDlg)
	ON_WM_DESTROY()
	ON_MESSAGE(WM_VIDEO_WND_INVOKED, OnVideoWnd)
	ON_WM_TIMER()
	ON_WM_SYSCOMMAND()
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(ID_NEXT, OnNext)
	ON_BN_CLICKED(ID_PREV, OnPrev)
	ON_BN_CLICKED(IDBTN_EXIT, OnOK)
	ON_BN_CLICKED(IDBTN_MIN, OnMin)
	ON_BN_CLICKED(IDBTN_SWITCH, OnSwitch)
	ON_BN_CLICKED(IDBTN_SWITCH1, OnSwitch1)
	ON_BN_CLICKED(IDBTN_SETUP, OnSetup)
	ON_BN_CLICKED(IDBTN_1, On1)
	ON_BN_CLICKED(IDBTN_4, On4)
	ON_BN_CLICKED(IDBTN_6, On6)
	ON_BN_CLICKED(IDBTN_9, On9)
	ON_BN_CLICKED(IDBTN_16, On16)
	ON_BN_CLICKED(IDBTN_25, On25)
	ON_MESSAGE(WM_FILTER_ACCEL, OnFilterAccel)
	ON_BN_CLICKED(IDBTN_LOGIN, OnLogin)
	ON_BN_CLICKED(IDBTN_SYSTEM, OnSystem)
	ON_BN_CLICKED(IDBTN_MD, OnMd)
	ON_BN_CLICKED(IDBTN_ALARM, OnAlarm)
	ON_BN_CLICKED(IDBTN_BACKUP, OnBackup)
	ON_BN_CLICKED(IDBTN_CAMERA, OnCamera)
	ON_BN_CLICKED(IDBTN_CHANNEL, OnChannel)
	ON_BN_CLICKED(IDBTN_RECORD, OnRecord)
	ON_BN_CLICKED(IDBTN_SCHED, OnSched)
	ON_BN_CLICKED(IDBTN_VOD, OnVod)
	ON_BN_CLICKED(IDBTN_LC, OnLC)
	ON_BN_CLICKED(IDBTN_SNAP, OnSnapshot)
	ON_BN_CLICKED(IDBTN_CLIENT_SETUP, OnLocal)
	ON_BN_CLICKED(IDBTN_FULLSCR, OnFullscr)
	ON_MESSAGE(WM_BALLOON, OnBalloon)
	ON_BN_CLICKED(IDBTN_SEQ, OnSeq)
	ON_BN_CLICKED(ID_WARNING, on_open_alarm)
	ON_BN_CLICKED(IDBTN_NEW_ADD, On_new_add)

	ON_MESSAGE(WM_LOGGED_OUT, OnLoggedOut)
	ON_MESSAGE(NTM_ALARM, on_alarm)
	ON_MESSAGE(WM_TOGGLE_MUTE, on_mute)
	ON_MESSAGE(WM_HIDE_ALARM, on_hide_alarm)
	ON_MESSAGE(WM_GETDISKINFO, set_disk_info)
	ON_MESSAGE(NTM_CMD_NETALARM, onnetalarm)


END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDvrManagerDlg message handlers

#include "utils/Splash.h"
//##ModelId=3F90BABA0389
BOOL CDvrManagerDlg::OnInitDialog()
{
	
	CBDialog::OnInitDialog();
	CSplashWnd::EnableSplashScreen();
//	CSplashWnd::ShowSplashScreen(this);
	
	SetWindowText(IDString(IDS_TITLE));

	#ifdef  VER_CHENGFENG
	GetDlgItem(ID_VERSION)->MoveWindow(0, 5, 120, 30) ;
	#else
	GetDlgItem(ID_VERSION)->MoveWindow(870, 675, 120, 30) ;
	#endif
	m_version.SetText(CString(VERSION) + DECODE_LIB);
	m_version.SetTransparent(TRUE).SetTextColor(RGB(255,255,255));
	m_version.MoveWindow(870,675,120,30);
	CString back = read_string(rkSettings, rvBackground);
	
	if( back.IsEmpty() )
		back = _T("back.jpg");
	if( SetBitmap(_T(back)) )
	{
		MessageBox(_T("Error: background image could not be found.\n\nPlease re-install the software."), _T("Background image not found"), MB_OK|MB_ICONERROR);
		CBDialog::OnCancel();
		return FALSE;
	}
	
	full_scr(this);
	GetDlgItem(ID_SCENE)->MoveWindow(21,20,801,651);
	GetDlgItem(ID_SCENE)->GetWindowRect(swp.rc);
	swp.hm = 4;
	swp.vm = 4;

	GetDlgItem(ID_TIME)->MoveWindow(839,23,173,81);
	GetDlgItem(ID_RIGHT_TOOLBAR)->MoveWindow(839,108,170,563);
	GetDlgItem(ID_BOTTOM_TOOLBAR)->MoveWindow(23,699,999,65);
	GetDlgItem(ID_VERSION)->MoveWindow(870, 675, 170, 30) ;
	
	for( int i=0; i<vw_count; i++ )
	{
		vw[i].create(i, this);
		mgr1.add(vw[i]);
		mgr4.add(vw[i]);
		mgr6.add(vw[i]);
		mgr9.add(vw[i]);
		mgr16.add(vw[i]); 
		mgr25.add(vw[i]);
	}


	mgr = vw_mode(read_dword(rkSettings, rvLastVWMode,16));
	redraw_swp();
	
	toolbar_btm.join(this, ID_BOTTOM_TOOLBAR);
	//rlogin.join(this, ID_RIGHT_TOOLBAR);
	join_right(&raddnew);
	join_right(&rlogin);

	rts.push_back(&rlogin);
	rts.push_back(&rvod);
	rts.push_back(&rlr);
	rts.push_back(&rcamera);
	
	rts.push_back(&rchannel);
	rts.push_back(&ralarm);
	rts.push_back(&rmd);
	rts.push_back(&rsched);
	
	rts.push_back(&rrec);
	rts.push_back(&rsystem);
	rts.push_back(&rbackup);
	rts.push_back(&rlocal);
	rts.push_back(&raddnew);
	

	accel = LoadAccelerators(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_ACCEL));

	//	更新窗口
	
	//SetTimer(1, 10, NULL) ;
//	fwangmx = fopen("wangmx.txt", "wt") ;
	auto_switch_timer = 0 ;
	last_mgr_mode = vw_mode(mgr);
	return TRUE ;
}

//##ModelId=3F90BABA0067
int CDvrManagerDlg::vw_mode(sub_wnds_mgr* p)
{
	if( p == &mgr1 )
	{
		return 0;
	}
	if( p == &mgr4 )
	{
		return 1;
	}
	if( p == &mgr6 )
	{
		return 2;
	}
	if( p == &mgr9 )
	{
		return 3;
	}
	if( p == &mgr16 )
	{
		return 4;
	}
	if( p == &mgr25 )
	{
		return 5;
	}
	return 1;
}

//##ModelId=3F90BABA007B
sub_wnds_mgr* CDvrManagerDlg::vw_mode(int i)
{
	switch(i)
	{
	case 0:
		return &mgr1;
	case 1:
		return &mgr4;
	case 2:
		return &mgr6;
	case 3:
		return &mgr9;
	case 4:
		return &mgr16;
	case 5:
		return &mgr25;
	}
	return &mgr4;
}

//##ModelId=3F90BABA0393
void CDvrManagerDlg::OnDestroy() 
{
//	clear_alarms();
	DestroyAcceleratorTable(accel);	accel = NULL;

	write_dword(rkSettings, rvLastVWMode, vw_mode(mgr));
	CBDialog::OnDestroy();
}

//##ModelId=3F90BABA02B6
void CDvrManagerDlg::On1() {mgr1.clear(); mgr1.add(video_channel::current_sel()); switch_video(&mgr1); redraw_swp();}
//##ModelId=3F90BABA02C0
void CDvrManagerDlg::On4() {switch_video(&mgr4); redraw_swp();}
//##ModelId=3F90BABA02CA
void CDvrManagerDlg::On6() {switch_video(&mgr6); redraw_swp();}
//##ModelId=3F90BABA02D4
void CDvrManagerDlg::On9() {switch_video(&mgr9); redraw_swp();}
//##ModelId=3F90BABA02DE
void CDvrManagerDlg::On16() {switch_video(&mgr16); redraw_swp();}
//##ModelId=3F90BABA02E8
void CDvrManagerDlg::On25() {switch_video(&mgr25); redraw_swp();}

/*
 *	修正:
 *	当有视频窗口全屏时, 快捷键切换会引起混乱
 */
//##ModelId=3F90BABA0053
void CDvrManagerDlg::check_video_channel()
{
	if( video_channel::current_sel()->is_fulled() )
	{
		video_channel::current_sel()->restore();
		//RedrawWindow();
	}
}

//##ModelId=3F90BAB903D7
void CDvrManagerDlg::switch_video(sub_wnds_mgr* swm)
{
	check_video_channel();

//	SetRedraw(FALSE);
	mgr->hide_all();
	mgr = swm;
//	redraw_swp();
}

//##ModelId=3F90BABA0035
void CDvrManagerDlg::redraw_swp()
{
	mgr->update(swp);
	CRect rc(swp.rc);
	rc.InflateRect(4,4,4,4);
	RedrawWindow(rc);
}

/*
 *	切换视频窗口顺序		
 */
// 1-4-6-9-1-...
void CDvrManagerDlg::OnSwitch()
{
	if (auto_switch_timer)  {
	//	KillTimer(auto_switch_timer) ;
	//	auto_switch_timer = 0 ;
	}
	else  {
		auto_switch_timer = SetTimer(31, 5000, NULL) ;
	}
/*	check_video_channel();

//	SetRedraw(FALSE);
	sub_wnds_mgr* x[] = {&mgr1, &mgr4, &mgr6, &mgr9, &mgr16};
	for( int i=0; i<SIZE_OF(x); i++ )
	{
		if( mgr == x[i] )
		{
			++i %= SIZE_OF(x);
			switch_video(x[i]);
			break;
		}
	}
	
	redraw_swp();*/
}

// 1-9-6-4-1-...
void CDvrManagerDlg::OnSwitch1()
{
	check_video_channel() ;
	
//	SetRedraw(FALSE);
	sub_wnds_mgr* x[] = {&mgr1, &mgr4, &mgr6, &mgr9, &mgr16};
	for( int i=0; i<SIZE_OF(x); i++ )
	{
		if( mgr == x[i] )
		{
			--i;
			if( i < 0 )
				i = SIZE_OF(x)-1;
			switch_video(x[i]);
			break;
		}
	}

	redraw_swp();
}

//##ModelId=3F90BABA039D
LRESULT CDvrManagerDlg::OnVideoWnd(WPARAM w, LPARAM l)
{
	// w: 窗口指针, CWnd*
	// l: 消息, WM_LBUTTONDOWN

	video_channel* p = (video_channel*)w;
	UINT msg = l;

	if( msg == WM_LBUTTONDOWN )
	{
		p->report_channel();
		rlogin.PostMessage(WM_VIDEO_WND_INVOKED, w, l);
		//rlogin.sel(p);
		CToolbarBottom * ptool = CToolbarBottom::m_ptool;
        ptool->PostMessage(NTM_CMD_TALKING, 0, 0);
	}
	if( msg == WM_LBUTTONDBLCLK )
	{
		if( mgr != &mgr1 )
		{
			last_mgr_mode = vw_mode(mgr);
			mgr->hide_all();
			mgr = &mgr1;
			mgr1.clear();
			mgr1.add(p);
			redraw_swp();
			return TRUE;
		}

⌨️ 快捷键说明

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