📄 dvrmanagerdlg.cpp
字号:
// 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 + -