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

📄 rightlogin.cpp

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

#include "stdafx.h"
#include "../Resource.h"
#include "../dlgs/DlgAlarm.h"
#include "../dlgs/dlgipalias.h"
#include "../toolbars/RightLogin.h"
#include "../utils/common.h"
#include "../utils/custom_msgs.h"
#include "../video/video_channel.h"
#include "../toolbars/rightlocal.h"
#include "../map/PictureShow.h"
#include "ToolbarBottom.h"
#include "Right_add_new.h"
#include <wingdi.h>
#include "QueryDecState.h"
#include "UserChangeI.h"
#include "ShowPopedom.h"
#include "click_btn.h"
#include "fileoperation.h"
#include "popup_menu.h"
#include "reg.h"
#include "timer.h"
#include "msgbox.h"
#include "winsock2.h"

#include "rightvod.h"
#include "rightlr.h"
//#include "vector_remove.h"

/*
 *	默认本地网络端口 8101
 */
#define ID_LOGIN             20
#define ID_OPENVEDIO         21   
#define ALARM_NET_SERVER     502        
#define LOCAL_PORT           8101
#define MAX_VOD_WINDOWS      16
#define login_interval       200
#define open_video_interval  200
#define BASE_WINDOW_ID       320
#define ALARM_OPENVIDEO      40
#define MAXALARMWINDOWNUB    3
#define COUNTS_VOD_WINDOWS   8

#define IMENU_ITEM_ID		 9000

LPCTSTR rkLastStatus = _T("Settings\\LastStatus");
LPCTSTR rvIPPort = _T("IPPort");
LPCTSTR rvUser = _T("User");

int m_temnubpoll[MAX_VOD_WINDOWS];
bool m_talk[MAX_VOD_WINDOWS];

extern LPCTSTR rvNetAlarmsetup;
extern LPCTSTR rvNetAlarmtime;
extern LPCTSTR rvNetAlarmopenchan;
extern LPCTSTR rvNetAlarmclosechan;
extern LPCTSTR rvNetAlarmopenlight;
extern LPCTSTR rvNetAlarmcloselight;
extern LPCTSTR rvNetAlarmopenptz;


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

extern CString m_login_client_name;
extern Popedom_Setting  m_login_client_popedom;
extern char m_system_directory[50];
extern int video_channel_count();
extern video_channel* get_video_channel(int idx);
extern LPCTSTR rvwindowpoll;
extern LPCTSTR rvwindowpolltime;
extern LPCTSTR rkSettings;
extern LPCTSTR rvCloseRemote;
extern LPCTSTR rvJumpFrame;
extern LPCTSTR rvDecodeData;
extern LPCTSTR rvNetworkProtocol;

Machine_Channel_Setting m_window_poll[MAX_VOD_WINDOWS][120];
Machine_Channel_Setting m_clientchannelsetting[300]; 
Remote_Station_setting m_station[120];
int m_station_length=0;

int m_channel[MAXALARMWINDOWNUB+1];
int m_alarm_window=0;
int m_alarm_cyc_nub = 0;

ip_port m_alarm_ipp;
TREC_ALARMINFO  p_alarm_ptr;
FILE *m_log_write_file;
FILE *m_log_write_tem_file;
FILE *m_log_alarm_file;
FILE *m_log_alarm_tem_file;
FILE *m_log_kk_file;
BOOL m_close_remote_bool = FALSE;

char  FILE_SETUPHEAD[] = {'D', 'V', 'R', 'F'} ;


/////////////////////////////////////////////////////////////////////////////
// CRightLogin dialog
//##ModelId=3F90BAB003E1
CRightLogin* CRightLogin::self = NULL;
//##ModelId=3F90BAB100FB
CRightLogin* CRightLogin::the_one() {return self;}
//##ModelId=3F90BAB100DE
CRightLogin::CRightLogin(CWnd* pParent /*=NULL*/)
	: baseclass(CRightLogin::IDD, pParent), net(0)
{
	//{{AFX_DATA_INIT(CRightLogin)
	m_priv = _T("");
	m_scene = _T("");
	//m_loginip = _T("");
	//m_password = _T("");
	m_strChannelIndex = _T("");
	m_strChannelIP = _T("");
	m_strVideoTitle = _T("");
	m_strChannelBitrate = _T("");
	m_strNetType = _T("");
	m_closewindow = 0;
	m_login_temip = _T("");
	m_tem_password = _T("");
	m_login_temuser = _T("");
	last_refresh = 0;
	tcp_refresh = 0;
	m_slow = 0;
	//}}AFX_DATA_INIT
    for(int i=0;i<MAX_VOD_WINDOWS;i++)
	{
       m_temnubpoll[i]=0;
	   m_talk[i]=false;
	}
	m_auto_poll=true;

	id_list.reserve(120);

	m_login_nub = 0;
	m_open_vedio_nub = 0;
	p_map_image = NULL; 
	self = this;
	m_alarm_video_lock = true;
	m_log_kk_file = fopen("kkk.txt","wt");
//	set_font(_T("宋体"), 9);
}

//##ModelId=3F90BAB1008D
ip_port CRightLogin::current_sel_ipp()
{
	int idx = m_lstLogged.GetCurSel();
	if( idx == -1 ) 
		return ip_port(1,0);
	idx = find_position();
	if( idx == -1 ) return 0;
	channel_info& ref = cmgr[idx];

	return ref.get_ip_port();
}

//##ModelId=3F90BAB10354
void CRightLogin::DoDataExchange(CDataExchange* pDX)
{
	if( !pDX->m_bSaveAndValidate && net)
	{
		ip_port ipp = current_sel_ipp();
		int channels = get_chnls( ipp.get_ip(),ipp.look_port());
		PRIVILEGE p = net_get_privilege(net, ipp.get_ip(), ipp.look_port());
		CString str;
		switch(p)
		{
		case privNEWVERSION:
            m_priv.LoadString(IDS_NEWVERSION);
			break;
		case privUSER:
			m_priv.LoadString(IDS_USER);
			break;
		case privADMIN:
			m_priv.LoadString(IDS_ADMIN);
			break;
		case priv16VERSION:
			m_priv.LoadString(IDS_16VERSION);
			break;
		case priv4VERSION:
			m_priv.LoadString(IDS_4VERSION);
			break;
		case priv4008VERSION:
			m_priv.LoadString(IDS_4008VERSION);
			break;
		case priv2000VERSION: 
			switch(channels) {
			case 4: m_priv = "2004";
				break;
			case 8: m_priv = "2008";
				break;
			case 16: m_priv = "2016";
			}
			str.LoadString(IDS_2000VERSION);
			m_priv += str;
			break;
		case priv2100VERSION:
			switch(channels) {
			case 4: m_priv = "2004";
				break;
			case 8: m_priv = "2008";
				break;
			case 16: m_priv = "2016";
			}
			str.LoadString(IDS_2100VERSION);
			m_priv += str;
			break;
		case priv6008: m_priv = "6008";
			break;
		case priv6008A4: m_priv = "6008A4";
			break;
		case priv6008V: m_priv = "6008V";
			break;
		case priv6016: m_priv = "6016";
			break;
		case priv6016V: m_priv = "6016V";
			break;
		case priv6016A8: m_priv = "6016A8";
			break;
		case privNONE:
		default:
			m_priv.LoadString(IDS_INVALID);
			break;
		}
		/*
		 *	m_10 does not update data sometime somehow... ???
		 *	force it to do it !!!
		 */
		m_10.SetText(m_priv);
	}
	baseclass::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRightLogin)
	
	DDX_Control(pDX, IDBTN_CLOSE_REMOTE, m_btn_rclose);
	DDX_Control(pDX, IDBTN_SLOW, m_btn_slow);
	DDX_Control(pDX, IDBTN_FAST, m_btn_fast);
	DDX_Control(pDX,IDBTN_CHANGE_NETTYPE,m_btn_cnettype);
	DDX_Control(pDX, ID_PRIV, m_10);
	DDX_Control(pDX, ID_VIDEO_TITLE, m_l3);
	DDX_Control(pDX, ID_CHANNEL_NETTYPE, m_19);
	DDX_Control(pDX, IDC_LOG_IN_TEM, m_login_tem);
    DDX_Control(pDX, IDC_LOG_OUT_TEM, m_logout_tem);
	DDX_Control(pDX, IDC_LOG_IN_IP, m_tem_ctl_login);
	
	
	DDX_Control(pDX, ID_CHANNEL_IP, m_l2);
	DDX_Control(pDX, ID_CHANNEL_INDEX, m_l1);
	DDX_Control(pDX, ID_NET, m_21);
	DDX_Control(pDX, ID_1, m_22);
	
	DDX_Control(pDX, ID_S, m_s);
	DDX_Control(pDX, IDBTN_CLOSE, m_btn_close);
	DDX_Control(pDX, IDC_LOGOUT,m_user_logout);
	
	DDX_Control(pDX, IDC_COMBO1, m_list_scence);
	DDX_Control(pDX, IDBTN_LOGIN, m_btn_login);
	DDX_Control(pDX, IDBTN_WINDOWPOLLUP,m_pollup);
	DDX_Control(pDX, IDBTN_WINDOWPOLLNEXT,m_pollnext); 

	DDX_Control(pDX, ID_GROUP4, m_grp4);
	//DDX_Control(pDX, ID_GROUP3, m_grp3);
	DDX_Control(pDX, ID_GROUP2, m_grp2);
	DDX_Control(pDX, ID_GROUP1, m_grp1);
		
	DDX_Control(pDX, IDLST_LOGGED_IN, m_lstLogged);
	DDX_Control(pDX, ID_8, m_8);
	
	//DDX_Control(pDX, ID_7, m_7);
	DDX_Control(pDX, ID_3, m_3);
	DDX_Control(pDX, ID_2, m_2);

	DDX_Control(pDX, IDC_STATIC_IP, m_static_ip);
    DDX_Control(pDX, IDC_STATIC_USER, m_static_user);
	DDX_Control(pDX, IDC_STATIC_PASS, m_static_pass);	
	
	DDX_Text(pDX, IDC_LOG_IN_IP, m_login_temip);
	DDX_Text(pDX, IDC_LOG_IN_PASS, m_tem_password);
	DDX_Text(pDX, IDC_LOG_IN_USER, m_login_temuser);
	
	DDX_Text(pDX, ID_CHANNEL_INDEX, m_strChannelIndex);
	DDX_Text(pDX, ID_CHANNEL_IP, m_strChannelIP);
	DDX_Text(pDX, ID_VIDEO_TITLE, m_strVideoTitle);
	DDX_Text(pDX, ID_CHANNEL_BITRATE, m_strChannelBitrate);
	DDX_Text(pDX, ID_CHANNEL_NETTYPE, m_strNetType);
	DDX_Text(pDX, ID_PRIV, m_priv);
	DDX_Text(pDX, IDC_COMBO1, m_scene);
	//}}AFX_DATA_MAP

	m_login_tem.EnableWindow(!m_login_temip.IsEmpty());
	m_logout_tem.EnableWindow(m_lstLogged.GetCount());
	
    m_pollup.EnableWindow(check_poll());
	m_pollnext.EnableWindow(check_poll());

//	m_btn_close.EnableWindow(video_channel::current_sel()->is_video_opened());
	m_btn_rclose.EnableWindow(video_channel::current_sel()->is_video_opened());
	m_btn_cnettype.EnableWindow(video_channel::current_sel()->is_video_opened()
		&& video_channel::current_sel()->tcpudp_server);
}

BEGIN_MESSAGE_MAP(CRightLogin, baseclass)
	//{{AFX_MSG_MAP(CRightLogin)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDBTN_CLOSE, OnClose)
	ON_BN_CLICKED(IDBTN_LOGIN, OnLogin)
	
	ON_BN_CLICKED(IDC_LOGOUT, Onuserlogout)
	ON_EN_CHANGE(IDC_LOG_IN_IP, OnChangetemip)
	ON_BN_CLICKED(IDC_LOG_IN_TEM, OnLogintemp)
	ON_BN_CLICKED(IDC_LOG_OUT_TEM, Onlogouttemp)
	ON_BN_CLICKED(IDBTN_WINDOWPOLLUP,Onpollup)
	ON_BN_CLICKED(IDBTN_WINDOWPOLLNEXT,Onpollnext)
	ON_MESSAGE(WM_UPDATE_DATA, OnUpdateData)
	ON_BN_CLICKED(IDBTN_CLOSE_REMOTE, OnCloseRemote)
	ON_BN_CLICKED(IDBTN_SLOW, OnSlow)
	ON_BN_CLICKED(IDBTN_FAST, OnFast)
	ON_BN_CLICKED(IDBTN_CHANGE_NETTYPE, OnChangeNetType)
	ON_LBN_DBLCLK(IDLST_LOGGED_IN, OnDblclkList)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeScene)
	ON_CBN_SETFOCUS(IDC_COMBO1, OnSetfocusScene)
	ON_WM_TIMER()
	ON_COMMAND_RANGE(IMENU_ITEM_ID,IMENU_ITEM_ID+100,OnMenuSelect)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_UPDATE_DATA, OnUpdateData)
	ON_MESSAGE(WM_CONNECT, OnConnect)
	ON_MESSAGE(WM_OPEN_VOD, on_open_vod)
	ON_MESSAGE(WM_CLOSE_VOD, on_close_vod)
	ON_MESSAGE(WM_SET_VOD_SPEED, on_set_vod_speed)
	ON_MESSAGE(WM_GET_VOD_SPEED, on_get_vod_speed)
	ON_MESSAGE(WM_LOCAL_REC, on_local_rec)
	ON_MESSAGE(WM_GET_LOCAL_REC, on_get_local_rec)
	ON_MESSAGE(WM_UPDATE_WINDOW, on_update_wnd)

	ON_MESSAGE(WM_SHOW_MENU, on_show_menu)
	ON_MESSAGE(WM_MENU_CLOSE, on_menu_close)
	ON_MESSAGE(NTM_REFRESH_BITRATE, refresh_bitrate)
	ON_MESSAGE(NTM_USER_LOGOUT, user_logout)
	ON_MESSAGE(WM_USER_MENU, menu_open_channel)

	ON_BN_CLICKED(IDM_CLOSE, OnClose)
	MSG2(NTM_CMD_LOGIN_OK, on_login)
	MSG2(NTM_CMD_DISCONNECT_TIMEOUT,on_disconnect)
	MSG2(NTM_CMD_CHANNEL_OPENED, on_channel_opened)
	MSG2(NTM_CMD_CHANNEL_CLOSED, on_channel_closed)
	MSG2(NTM_ALARM, on_alarm)
	MSG2(NTM_ALARM_VERSION, on_new_version)
	//MSG2(NTM_APART_ALARM, on_apart_alarm)
	MSG2(NTM_CMD_LOGIN_AGAIN, on_login_again)
	MSG2(NTM_CMD_LOGIN_UPDATE, on_login_update)
	MSG2(NTM_CMD_LOGIN_DELETE,on_del_close)
	MSG2(NTM_CMD_KILL_TIMER,kill_window_timer)
	MSG2(NTM_DISK_INFO_GET_OK,get_disk_info_ok)
	MSG2(ELE_MAP_MSG_OPEN_VEDIO, ele_map_open_vedio)

	ON_MESSAGE(WM_SNAPSHOT, on_snapshot)
	ON_MESSAGE(WM_VIDEO_WND_INVOKED, on_video_wnd)
	ON_MESSAGE(WM_TOGGLE_MUTE, on_mute)

	MSG2(NTM_TALK_BEGIN, on_begin_talk)	
    MSG2(NTM_TALK_FAILED,on_fail_talk)	
	MSG2(NTM_CMD_REQUEST_NOT_OK, on_req_failure)
	MSG2(NTM_ZH_DECSTATE_GET_OK, get_zh_decstate)

	MSG2(NTM_ALARM_SERVER, on_alarm_server)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRightLogin message handlers

CLabel& init_label(CLabel& l)
{
	COLORREF cl = RGB(255,255,255);
	l.SetTransparent(TRUE).SetTextColor(cl);
	return l;
}

CLabel& init_title(CLabel& l)
{
	l.SetTransparent(TRUE).SetFontBold(TRUE).
		SetFontSize(9).
		SetTextColor(RGB(0,0,80));
	return l;
}

static COLOR_SPACE vr_table[] = 
{
	csAUTO,
	csYUY2,
	csUYVY,
	csRGB555,
	csRGB565,
	csRGB24,
	csRGB32
};

extern ULONG mpeg4;
extern bool m_loginuser_admin;

char m_popedom_directory[150];
char m_user_management_directory[150];

char m_remote_station_directory[150];
char m_channel_window_directory[150];

char m_scene_setup_directory[150];
char m_inspect_date_query_directory[150];

char m_alarm_server_directory[150];
char m_alarm_server_link_directory[150];

/*
 *	对话框初始化, 分配资源
 */
//##ModelId=3F90BAB2011A
BOOL CRightLogin::OnInitDialog() 
{
	baseclass::OnInitDialog();
//	m_grp1.init();
//	m_grp2.init();
	init_label(m_2);
//	init_label(m_3);	m_3.SetFontBold(TRUE);
//	init_label(m_4);	m_4.SetFontBold(TRUE);
//	init_label(m_5);
//	init_label(m_6);
//	init_label(m_7);
	init_label(m_8);
	init_label(m_10);

	init_label(m_static_ip);
    init_label(m_static_user);
	init_label(m_static_pass);
	
	init_label(m_21);
	init_label(m_22);
	init_label(m_19);
	init_label(m_l1);
	init_label(m_l2);
	init_label(m_l3);
	for(int i=0;i<120;i++)
	{
     m_opensetbool[i]=false;
	 m_openping[i]=false;
	 m_loginagain[i]=false;
	 m_showpopedom[i]=false;
	}

    m_close_remote_bool = read_dword(rkSettings,rvCloseRemote,1);
	//m_user_management.EnableWindow(m_loginuser_admin);

	init_title(m_3);

	ipmgr.load_reg();
	m_login_temip = read_string(rkLastStatus, rvIPPort);
	m_login_temuser = read_string(rkLastStatus, rvUser);
	UpdateData(FALSE);

	m_tem_login_scene.Format(IDS_LOGIN_TEMP_STATION);
	BOOL m_lost_jump_frame = read_dword(rkSettings, rvJumpFrame, 0);
	BOOL m_typeprotcp = read_dword(rkSettings, rvNetworkProtocol, 0);

	net = net_create(0, LOCAL_PORT, m_hWnd, mpeg4, m_lost_jump_frame, !m_typeprotcp) ;
	if (net == 0)  {
		AfxMessageBox(IDS_FATAL_NET_CREATE, MB_OK | MB_ICONERROR) ;
		AfxGetMainWnd()->SendMessage(WM_COMMAND, IDCANCEL) ;
		return FALSE ;
	}

	ShellExecute(m_hWnd, _T("Open"), _T("arp.exe"), " -d *", NULL, SW_HIDE);
	
	COLOR_SPACE cs = csAUTO;

	BOOL video_mem = read_dword(rkSettings, rvMem, 0) ;
	net_set_color_space(net, cs, video_mem) ;

	BOOL m_open_decodedata = read_dword(rkSettings, rvDecodeData, 1);
	net_set_decode_data(m_open_decodedata);
	
	opensetting();
	// DvrManager /open:"192.168.0.228, 888888, {1,2,4}"
	parse_cmd_line();

	open_alarm_server(net, 1400);

	SetTimer(ALARM_NET_SERVER, 1000, NULL) ;
	return TRUE ;
}

void CRightLogin::add_open_chnl(CString cmd)
{
	cmd.Remove(_T(' '));

	CString ipp, pass;
	std::vector<int> chnls;

	int idx = 0;

	// 主机地址
	idx = cmd.Find(_T(","));
	if( idx == -1 )
		return;

	ipp = cmd.Left(idx);
	cmd.Delete(0, idx+1);	// remove ','
//	ipp = ipmgr.trans_ip(ipp);

	// 密码
	idx = cmd.Find(_T(","));
	if( idx == -1 )
		return;
	
	pass = cmd.Left(idx);
	cmd.Delete(0, idx+1);

	// 视频通道
	idx = cmd.Find(_T("{"));
	int end = cmd.Find(_T("}"));
	if( idx == -1 || end == -1 )
		return;

	cmd.Remove(_T('{'));
	cmd.Remove(_T('}'));

	CString strchnl;
	int c = 0;
	for(;;)
	{
		end = cmd.Find(_T(","));
		if( end == -1 )
			end = cmd.GetLength();

		strchnl = cmd.Left(end);
		c = _ttoi(strchnl);
		chnls.push_back(c-1);

		if( end == cmd.GetLength() )
			break;

		cmd.Delete(0, end+1);
	}
	if( !chnls.empty() )
	{
		open_list.push_back(auto_open(ipp, pass, chnls));
	}
}

⌨️ 快捷键说明

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