📄 dvsuserinit.cpp
字号:
#include "stdafx.h"
#include "DvsUser.h"
#include "DvsUserDlg.h"
#include "DvsUserReg.h"
#include "Welcome.h"
#include "ListenCmdThread.h"
#include "ListenDataThread.h"
#include "WorkDevice.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_ICONMESSAGE WM_USER + 1001
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::Initialize()
{
if(!InitFileName())
{
return TRUE;
}
InitReg();
// USER[0].bUserState = 1;
// USER[0].dwUserPriority = 4;
// sprintf(USER[0].szUserName, "%s", _TEXT("调度员"));
if(!InitSocket())
{
return TRUE;
}
// if(!Login())
// {
// return TRUE;
// }
InitFrame();
SetUserPower(CLIENT.dwUserPriority);
g_nFileSaveTime = 5;
g_strFileSavePath = "D:\\data";
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::Finitialize()
{
m_bExit = TRUE;
/*LOG FILE*/
m_Log.WriteLog(CLog::LOGOUT, CLIENT.szUserName, CLIENT.dwUserPriority);
connSock.Close();
cmdListenSock.Close();
THREAD_DELETE(cmdListenThread);
dataListenSock.Close();
THREAD_DELETE(dataListenThread);
ctrlSock.Close();
THREAD_DELETE(recvCmdThread);
for(int i=0; i<4; i++)
{
if(pWork[i])
{
delete pWork[i];
pWork[i] = NULL;
}
}
if(m_hBmp){::DeleteObject(m_hBmp); m_hBmp = NULL;}
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::DestroyAllLink()
{
for(int i=0; i<4; i++)
{
if(LINK[i].bLinkState == TRUE)
{
OnSendVideoStop(LINK[i].dwCard, LINK[i].dwBrance);
}
}
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::InitFileName()
{
CHAR szTemp[260];
CString strTemp1;
CString strTemp2;
::GetModuleFileName(NULL, szTemp, 260);
strTemp2 = szTemp;
strTemp1 = strTemp2.Right(11);
if(strTemp1.CompareNoCase("DvsUser.exe") != 0)
{
MessageBox(_TEXT("文件已被破坏,请重新安装系统!"), _TEXT("错误"), 0|MB_ICONSTOP);
CDialog::OnCancel();
return 0;
}
m_strModulePath = strTemp2.Left(strTemp2.GetLength() - strTemp1.GetLength() - 1);
/*LOG FILE*/
CreateDirectory(m_strModulePath + "\\LOG", NULL);
m_Log.SetLogFileName(m_strModulePath + "\\LOG\\USER.EVT");
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::Login()
{
CWelcome dlg;
if(IDOK != dlg.DoModal())
{
/*LOG FILE*/
m_Log.WriteLog(CLog::LOGERR, dlg.m_strUserName, dlg.m_logUser.dwUserPriority);
CDialog::OnCancel();
return 0;
}
/*LOG FILE*/
m_Log.WriteLog(CLog::LOGIN, dlg.m_strUserName, dlg.m_logUser.dwUserPriority);
char szName[100];
gethostname(szName, 100);
hostent* ht = gethostbyname(szName);
sprintf(CLIENT.szUserName, "%s", dlg.m_strUserName);
sprintf(CLIENT.szIPAddr, "%d.%d.%d.%d", (BYTE)ht->h_addr_list[0][0],
(BYTE)ht->h_addr_list[0][1],
(BYTE)ht->h_addr_list[0][2],
(BYTE)ht->h_addr_list[0][3]);
CLIENT.uiCmdPort = 8000;
CLIENT.uiDataPort = 8001;
CLIENT.dwUserPriority = dlg.m_logUser.dwUserPriority;
DWORD dwSubInfo = 0xaaaaffff;
connSock.SetTimeOut(-1);
if(connSock.Create())
{
if(connSock.Connect(dlg.m_strServerIP, 6000))
{
if(connSock.SendProc(&CLIENT, sizeof(CLIENTINFO)))
{
if(connSock.RecvProc(&dwSubInfo, sizeof(DWORD)))
{
cmdListenThread->Resume();
dataListenThread->Resume();
return 1;
}
else{
MessageBox(_TEXT("网络连接成功,但服务器拒绝登录,请检测如下可能问题!\n1.试图以super权限登录,但系统中已存在一个super权限用户\n2.系统中连接的用户过多"),
_TEXT("错误"), 0|MB_ICONINFORMATION);
CDialog::OnCancel();
return 0;
}
}
}
}
MessageBox(_TEXT("无法连接到服务器,请检测网络状况!"), _TEXT("错误"), 0|MB_ICONINFORMATION);
CDialog::OnCancel();
return 0;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::InitReg()
{
CDvsUserReg reg;
reg.GetUserInfo(USER);
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::InitSocket()
{
cmdListenSock.SetTimeOut(-1);
if(!cmdListenSock.Create(8000))
{
::MessageBox(this->m_hWnd, _TEXT("无法初始化网络"), _TEXT("错误"), MB_ICONEXCLAMATION|0);
CDialog::OnCancel();
return FALSE;
}
dataListenSock.SetTimeOut(-1);
if(!dataListenSock.Create(8001))
{
::MessageBox(this->m_hWnd, _TEXT("无法初始化网络"), _TEXT("错误"), MB_ICONEXCLAMATION|0);
CDialog::OnCancel();
return FALSE;
}
cmdListenSock.Listen();
dataListenSock.Listen();
cmdListenThread = new CListenCmdThread();
cmdListenThread->Create(this);
dataListenThread = new CListenDataThread();
dataListenThread->Create(this);
for(int i=0; i<4; i++)
{
// pWork[i] = new CWorkDevice();
// pWork[i]->Init();
}
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::InitFrame()
{
int cx, cy;
cx = ::GetSystemMetrics(SM_CXSCREEN);
cy = ::GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(this->m_hWnd, 0/*HWND_TOPMOST*/, 0, 0, cx, cy, 0);
ToolTip.Create(this, TTS_ALWAYSTIP);
ToolTip.SetDelayTime(500);
////////////////////////////////////////////////////////////////////////////////////////
nfd.cbSize = sizeof(NOTIFYICONDATA);
nfd.uFlags = NIF_ICON|NIF_TIP|NIF_MESSAGE;
nfd.hWnd = this->m_hWnd;
nfd.uID = IDR_MAINFRAME;
nfd.hIcon = m_hTray;
sprintf(nfd.szTip, "%s", _TEXT("万力终端程序"));
nfd.uCallbackMessage = WM_ICONMESSAGE;
////////////////////////////////////////////////////////////////////////////////////////
m_view1_bar.MoveWindow (44, 14, 352, 16);
m_view1.MoveWindow (44, 14+16, 352, 288);
m_view2_bar.MoveWindow (405, 14, 352, 16);
m_view2.MoveWindow (405, 14+16, 352, 288);
m_view3_bar.MoveWindow (44, 327, 352, 16);
m_view3.MoveWindow (44, 327+16, 352, 288);
m_view4_bar.MoveWindow (405, 327, 352, 16);
m_view4.MoveWindow (405, 327+16, 352, 288);
// imageCamera.Create(16, 16, ILC_COLOR16, 1, 1);
// imageCamera.Add(m_hCamera);
// m_video_list.SetImageList(&imageCamera, LVSIL_SMALL);
// m_video_list.MoveWindow (798, 47, 194, 293);
// m_video_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB);
// m_video_list.SetBkColor(RGB(125, 168, 243));
// m_video_list.SetTextBkColor(RGB(125, 168, 243));
// m_video_list.SetTextColor(RGB(0, 0, 128));
// m_video_list.InsertColumn(0, _TEXT("摄象机名称"), LVCFMT_LEFT, 130);
// m_video_list.InsertColumn(1, _TEXT("云台"), 0, 40);
// m_video_list.InsertColumn(2, _TEXT("灯源"), 0, 40);
imageCamera.Create(16, 16, ILC_COLOR16, 1, 1);
imageCamera.Add(m_hCard);
imageCamera.Add(m_hCamera);
m_video_tree.SetImageList(&imageCamera, TVSIL_NORMAL);
m_video_tree.MoveWindow (798, 47, 194, 293);
// m_video_tree.SetBkColor(RGB(125, 168, 243));
m_video_tree.SetTextColor(RGB(0, 0, 128));
////////////////////////////////////////////////////////////////////////////////////////
m_btn_start.SubclassDlgItem(IDC_BTN_START, this);
m_btn_start.MoveWindow (70, 688, 100, 40);
m_btn_start.SetIcon(IDI_START, IDI_START, 32, 32);
m_btn_start.SetInactiveBgColor(RGB(148, 162, 198));
m_btn_start.SetActiveBgColor(RGB(125, 168, 243));
ToolTip.AddTool(&m_btn_start, _TEXT("开始实时显示图象"));
m_btn_video.SubclassDlgItem(IDC_BTN_VIDEO, this);
m_btn_video.MoveWindow (190, 688, 100, 40);
m_btn_video.SetIcon(IDI_VIDEO, IDI_VIDEO, 32, 32);
m_btn_video.SetInactiveBgColor(RGB(148, 162, 198));
m_btn_video.SetActiveBgColor(RGB(125, 168, 243));
ToolTip.AddTool(&m_btn_video, _TEXT("开始存储数字录像"));
m_btn_playback.SubclassDlgItem(IDC_BTN_PLAYBACK, this);
m_btn_playback.MoveWindow (310, 688, 100, 40);
m_btn_playback.SetIcon(IDI_PLAYBACK, IDI_PLAYBACK, 32, 32);
m_btn_playback.SetInactiveBgColor(RGB(148, 162, 198));
m_btn_playback.SetActiveBgColor(RGB(125, 168, 243));
ToolTip.AddTool(&m_btn_playback, _TEXT("回放已存储的视频文件"));
m_btn_config.SubclassDlgItem(IDC_BTN_CONFIG, this);
m_btn_config.MoveWindow (430, 688, 100, 40);
m_btn_config.SetIcon(IDI_CONFIG, IDI_CONFIG, 32, 32);
m_btn_config.SetInactiveBgColor(RGB(148, 162, 198));
m_btn_config.SetActiveBgColor(RGB(125, 168, 243));
ToolTip.AddTool(&m_btn_config, _TEXT("设置有关参数"));
m_btn_device.SubclassDlgItem(IDC_BTN_DEVICE, this);
m_btn_device.MoveWindow (550, 688, 100, 40);
m_btn_device.SetIcon(IDI_DEVICE, IDI_DEVICE, 32, 32);
m_btn_device.SetInactiveBgColor(RGB(148, 162, 198));
m_btn_device.SetActiveBgColor(RGB(125, 168, 243));
ToolTip.AddTool(&m_btn_device, _TEXT("进行云台控制"));
m_btn_exit.SubclassDlgItem(IDC_BTN_EXIT, this);
m_btn_exit.MoveWindow (670, 688, 100, 40);
m_btn_exit.SetIcon(IDI_EXIT, IDI_EXIT, 32, 32);
m_btn_exit.SetInactiveBgColor(RGB(148, 162, 198));
m_btn_exit.SetActiveBgColor(RGB(125, 168, 243));
ToolTip.AddTool(&m_btn_exit, _TEXT("退出本系统"));
////////////////////////////////////////////////////////////////////////////////////////
m_interface_save1.LoadBitmaps(IDB_SAVE1_UP, IDB_SAVE1_DOWN);
m_interface_save1.Create(CRect(0,0,0,0), this, IDC_INTERFACE_SAVE1);
m_interface_save1.MoveWindow(790, 420, 63, 26);
ToolTip.AddTool(&m_interface_save1, _TEXT("存储视窗1的视频为AVI文件"));
m_interface_save2.LoadBitmaps(IDB_SAVE2_UP, IDB_SAVE2_DOWN);
m_interface_save2.Create(CRect(0,0,0,0), this, IDC_INTERFACE_SAVE2);
m_interface_save2.MoveWindow(870, 420, 63, 26);
ToolTip.AddTool(&m_interface_save2, _TEXT("存储视窗2的视频为AVI文件"));
m_interface_save3.LoadBitmaps(IDB_SAVE3_UP, IDB_SAVE3_DOWN);
m_interface_save3.Create(CRect(0,0,0,0), this, IDC_INTERFACE_SAVE3);
m_interface_save3.MoveWindow(790, 460, 63, 26);
ToolTip.AddTool(&m_interface_save3, _TEXT("存储视窗3的视频为AVI文件"));
m_interface_save4.LoadBitmaps(IDB_SAVE4_UP, IDB_SAVE4_DOWN);
m_interface_save4.Create(CRect(0,0,0,0), this, IDC_INTERFACE_SAVE4);
m_interface_save4.MoveWindow(870, 460, 63, 26);
ToolTip.AddTool(&m_interface_save4, _TEXT("存储视窗4的视频为AVI文件"));
m_interface_review1.LoadBitmaps(IDB_RECYC1_UP, IDB_RECYC1_DOWN);
m_interface_review1.Create(CRect(0,0,0,0), this, IDC_INTERFACE_REVIEW1);
m_interface_review1.MoveWindow(790, 540, 63, 26);
ToolTip.AddTool(&m_interface_review1, _TEXT("循环显示当前编码器的8路视频"));
m_interface_review2.LoadBitmaps(IDB_RECYC2_UP, IDB_RECYC2_DOWN);
m_interface_review2.Create(CRect(0,0,0,0), this, IDC_INTERFACE_REVIEW2);
m_interface_review2.MoveWindow(870, 540, 63, 26);
ToolTip.AddTool(&m_interface_review2, _TEXT("循环显示当前编码器的8路视频"));
m_interface_review3.LoadBitmaps(IDB_RECYC3_UP, IDB_RECYC3_DOWN);
m_interface_review3.Create(CRect(0,0,0,0), this, IDC_INTERFACE_REVIEW3);
m_interface_review3.MoveWindow(790, 580, 63, 26);
ToolTip.AddTool(&m_interface_review3, _TEXT("循环显示当前编码器的8路视频"));
m_interface_review4.LoadBitmaps(IDB_RECYC4_UP, IDB_RECYC4_DOWN);
m_interface_review4.Create(CRect(0,0,0,0), this, IDC_INTERFACE_REVIEW4);
m_interface_review4.MoveWindow(870, 580, 63, 26);
ToolTip.AddTool(&m_interface_review4, _TEXT("循环显示当前编码器的8路视频"));
///////////////////////////////////////////////////////////////////////////////////////
m_bmLeft.LoadBitmap(IDB_LEFT);
m_bmTop.LoadBitmap(IDB_TOP);
m_bmRight.LoadBitmap(IDB_RIGHT);
m_bmBottom.LoadBitmap(IDB_BOTTOM);
m_bmVLine.LoadBitmap(IDB_VLINE);
m_bmHLine.LoadBitmap(IDB_HLINE);
m_hBmp = (HBITMAP)LoadImage(AfxGetApp()->m_hInstance, m_strModulePath+"\\BMP\\blank.BMP", IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
m_view1.ShowFlagBmp(m_hBmp);
m_view2.ShowFlagBmp(m_hBmp);
m_view3.ShowFlagBmp(m_hBmp);
m_view4.ShowFlagBmp(m_hBmp);
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
int CDvsUserDlg::DrawFrame(CDC* pDC)
{
CDC dcMem; BITMAP b;
dcMem.CreateCompatibleDC(pDC);
CBitmap* pOld;
pOld = dcMem.SelectObject(&m_bmTop);
m_bmTop.GetBitmap(&b);
pDC->BitBlt(0, 0, b.bmWidth, b.bmHeight, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(&m_bmBottom);
m_bmBottom.GetBitmap(&b);
pDC->BitBlt(44, 768-137, b.bmWidth, b.bmHeight, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(&m_bmLeft);
m_bmLeft.GetBitmap(&b);
pDC->BitBlt(0, 14, b.bmWidth, b.bmHeight, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(&m_bmRight);
m_bmRight.GetBitmap(&b);
pDC->BitBlt(1024-267, 14, b.bmWidth, b.bmHeight, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(&m_bmHLine);
m_bmHLine.GetBitmap(&b);
pDC->BitBlt(43, 318, b.bmWidth, b.bmHeight, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(&m_bmVLine);
m_bmVLine.GetBitmap(&b);
pDC->BitBlt(396, 14, b.bmWidth, b.bmHeight, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(pOld);
return 1;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
void CDvsUserDlg::SetUserPower(int iClass)
{
switch(iClass)
{
case 1:
m_btn_video.EnableWindow(FALSE);
m_btn_config.EnableWindow(FALSE);
m_btn_device.EnableWindow(FALSE);
break;
case 2:
m_btn_video.EnableWindow(TRUE);
m_btn_config.EnableWindow(FALSE);
m_btn_device.EnableWindow(TRUE);
break;
case 3:
m_btn_video.EnableWindow(TRUE);
m_btn_config.EnableWindow(TRUE);
m_btn_device.EnableWindow(TRUE);
break;
case 4:
m_btn_video.EnableWindow(TRUE);
m_btn_config.EnableWindow(TRUE);
m_btn_device.EnableWindow(TRUE);
break;
}
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -