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