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

📄 dvsusershortcut.cpp

📁 MPEG4网络视频服务器客户端图象监控软件
💻 CPP
字号:
#include "stdafx.h"
#include "DvsUser.h"
#include "DvsUserDlg.h"

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

#define	WM_SCSWITCH WM_USER+3000
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
void CDvsUserDlg::OnRclickVideoTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
CString strValue;
CString strParent;
HTREEITEM hCurSel;
HTREEITEM hParent;
DWORD	dwGUID;
DWORD	dwBrance;		

	hCurSel		= m_video_tree.GetSelectedItem();
	if(hCurSel	== NULL) return;

	strValue	= m_video_tree.GetItemText(hCurSel);
	
	hParent		= m_video_tree.GetParentItem(hCurSel);
	if(hParent == NULL)
	{
		return;
	}

	strParent	= m_video_tree.GetItemText(hParent);
	dwGUID		= ::SetGUID(strParent);
	dwBrance	= atoi(strValue.Right(1));
	
	DealShortcutLink(dwGUID, (dwBrance-1));
//	*pResult = 0;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::DealShortcutLink(DWORD dwCardGUID, DWORD dwBrance)
{
CString strCardIP;
DWORD	dwGUID;

	for(int i=0; i<32; i++)
	{
		strCardIP	= CARD[i].szCardIP;
		dwGUID		= ::SetGUID(strCardIP);
		if(dwGUID	== dwCardGUID)//确定选中的为这块卡
		{
			DealShortcutLink(DWORD(i), dwBrance, dwCardGUID);
			break;
		}
	}
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::DealShortcutLink(DWORD dwCardIndex, DWORD dwBrance, DWORD dwCardGUID)
{
	m_sc_dwCardIndex	= dwCardIndex;
	m_sc_dwBrance		= dwBrance;

	if(!SCMenu.m_hMenu)
		SCMenu.LoadMenu(IDR_SHORTCUTMENU);
	
	POINT pos;
	::GetCursorPos(&pos);

	SCMenu.ModifyODMenu(NULL, IDC_SHORTCUT_REFRESH, IDB_BMP_REFRESH);
	SCMenu.ModifyODMenu(NULL, IDC_SHORTCUT_VIEW1, IDB_BMP_MON);
	SCMenu.ModifyODMenu(NULL, IDC_SHORTCUT_VIEW2, IDB_BMP_MON);
	SCMenu.ModifyODMenu(NULL, IDC_SHORTCUT_VIEW3, IDB_BMP_MON);
	SCMenu.ModifyODMenu(NULL, IDC_SHORTCUT_VIEW4, IDB_BMP_MON);
	BCMenu*	pPopup = (BCMenu*)SCMenu.GetSubMenu(0);
	::SetForegroundWindow(this->m_hWnd);
	pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pos.x, pos.y, this);
	
	SCMenu.DestroyMenu();
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
void CDvsUserDlg::OnShortcutView1() 
{
	DealShortcutLink(m_sc_dwCardIndex, m_sc_dwBrance, 0, 0);
}
void CDvsUserDlg::OnShortcutView2() 
{
	DealShortcutLink(m_sc_dwCardIndex, m_sc_dwBrance, 1, 0);
}
void CDvsUserDlg::OnShortcutView3() 
{
	DealShortcutLink(m_sc_dwCardIndex, m_sc_dwBrance, 2, 0);
}
void CDvsUserDlg::OnShortcutView4() 
{
	DealShortcutLink(m_sc_dwCardIndex, m_sc_dwBrance, 3, 0);
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::DealShortcutLink(DWORD dwCardIndex, DWORD dwBrance, DWORD dwView, DWORD dwCardGUID)
{
	if		(CARD[dwCardIndex].dwCardState	== CARD_READY)
	{
		SC_OnStartReady(dwCardIndex, dwBrance, dwView);
		return;
	}

	else if	(CARD[dwCardIndex].dwCardState	== CARD_ERROR)
	{
		SC_OnStartError(dwCardIndex, dwBrance, dwView);
		return;
	}

	else if	(CARD[dwCardIndex].dwCardState	== CARD_START)
	{
		SC_OnStartStart(dwCardIndex, dwBrance, dwView);
		return;
	}

	else if	(CARD[dwCardIndex].dwCardState	== CARD_ALERT)
	{
		SC_OnStartAlert(dwCardIndex, dwBrance, dwView);
		return;
	}

	else if	(CARD[dwCardIndex].dwCardState	== CARD_INIT)
	{
		SC_OnStartInit(dwCardIndex, dwBrance, dwView);
		return;
	}

	else if	(CARD[dwCardIndex].dwCardState	== CARD_RECYCLE)
	{
		SC_OnStartRecycle(dwCardIndex, dwBrance, dwView);
		return;
	}
	
	else return;
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::SC_OnStartReady(DWORD dwCardIndex, DWORD dwBrance, DWORD dwView)
{
	SetViewWindow(dwView, dwCardIndex, dwBrance);
	AddLinkInfo(dwView, dwCardIndex, dwBrance);
	OnSendVideoStart(dwCardIndex, dwBrance);
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::SC_OnStartError(DWORD dwCardIndex, DWORD dwBrance, DWORD dwView)
{
	::MessageBox(this->m_hWnd, _TEXT("编码器发生故障,请检查编码器掉电以及线路故障!\n(RETURN errno = CARD_ERROR)"), _TEXT("错误"), 
					0|MB_ICONINFORMATION);
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::SC_OnStartStart(DWORD dwCardIndex, DWORD dwBrance, DWORD dwView)
{
	if(LINK[dwView].bLinkState == TRUE)
	{
		LINK[dwView].bLinkState = FALSE;
		OnSendVideoStop(LINK[dwView].dwCard, LINK[dwView].dwBrance);
		SC_OnRefreshTitle(dwView);

		DWORD dwParam = ((DWORD)((WORD)(dwBrance)) | (((DWORD)(WORD)(dwCardIndex))<<16));
		PostMessage(WM_SCSWITCH, dwParam, LPARAM(dwView));
		return;
	}

	for(int i=0; i<4; i++)
	{
 		if(LINK[i].bLinkState == TRUE)
		{
			if(LINK[i].dwCard == dwCardIndex)
			{
				LINK[i].bLinkState	= FALSE;
				OnSendVideoStop(dwCardIndex, CARD[dwCardIndex].dwActiveBrance);
				SC_OnRefreshTitle(i);
		//		::Sleep(500);
//				DealShortcutLink(dwCardIndex, dwBrance, i, 0);
				DWORD dwParam = ((DWORD)((WORD)(dwBrance)) | (((DWORD)(WORD)(dwCardIndex))<<16));
				PostMessage(WM_SCSWITCH, dwParam, LPARAM(dwView));
				return;
			}
		}
	}
	if(CARD[dwCardIndex].dwActiveBrance == dwBrance)
	{
		SetViewWindow(dwView, dwCardIndex, dwBrance);
		AddLinkInfo(dwView, dwCardIndex, dwBrance);
		OnSendVideoStart(dwCardIndex, dwBrance);
	}
	else{
		if(IDOK ==::MessageBox(this->m_hWnd, _TEXT("您所要监控的摄象机需要和别人协调?"), _TEXT("提示"), MB_OKCANCEL|MB_ICONQUESTION))
		{
			SetViewWindow(dwView, dwCardIndex, CARD[dwCardIndex].dwActiveBrance);
			AddLinkInfo(dwView, dwCardIndex, CARD[dwCardIndex].dwActiveBrance);
			OnSendVideoStart(dwCardIndex, dwBrance);
		}		
	}
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::SC_OnStartAlert(DWORD dwCardIndex, DWORD dwBrance, DWORD dwView)
{
	if(LINK[dwView].bLinkState == TRUE)
	{
		LINK[dwView].bLinkState = FALSE;
		OnSendVideoStop(LINK[dwView].dwCard, LINK[dwView].dwBrance);
		SC_OnRefreshTitle(dwView);

		DWORD dwParam = ((DWORD)((WORD)(dwBrance)) | (((DWORD)(WORD)(dwCardIndex))<<16));
		PostMessage(WM_SCSWITCH, dwParam, LPARAM(dwView));
		return;
	}

	for(int i=0; i<4; i++)
	{
 		if(LINK[i].bLinkState == TRUE)
		{
			if(LINK[i].dwCard == dwCardIndex)
			{
				LINK[i].bLinkState	= FALSE;
				OnSendVideoStop(dwCardIndex, CARD[dwCardIndex].dwActiveBrance);
				SC_OnRefreshTitle(i);
		//		::Sleep(500);
//				DealShortcutLink(dwCardIndex, dwBrance, i, 0);
				DWORD dwParam = ((DWORD)((WORD)(dwBrance)) | (((DWORD)(WORD)(dwCardIndex))<<16));
				PostMessage(WM_SCSWITCH, dwParam, LPARAM(dwView));
				return;
			}
		}
	}
	
	if(CARD[dwCardIndex].dwActiveBrance == dwBrance)	//使用中,监控同一路
	{
		SetViewWindow(dwView, dwCardIndex, dwBrance);
		AddLinkInfo(dwView, dwCardIndex, dwBrance);
		OnSendVideoStart(dwCardIndex, dwBrance);
	}
	else{//	g_User->CARD[nCurrentCard].dwActiveBrance != (UINT)nSelect//使用中,监控不是同一路
		MessageBox(_TEXT("正在发生报警,不允许切换视频!"), _TEXT("系统提示"), MB_OKCANCEL|MB_ICONQUESTION);
	}	
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::SC_OnStartInit(DWORD dwCardIndex, DWORD dwBrance, DWORD dwView)
{
	::MessageBox(this->m_hWnd, _TEXT("服务器未与编码器建立连接,请检查服务器的连接状态!\n(RETURN errno = CARD_INIT)"), _TEXT("提示"), 
					0|MB_ICONINFORMATION);

}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::SC_OnStartRecycle(DWORD dwCardIndex, DWORD dwBrance, DWORD dwView)
{
	::MessageBox(this->m_hWnd, _TEXT("循环显示时不允许被打断,请稍后再试!(*_^)"), _TEXT("提示"), 
					0|MB_ICONINFORMATION);
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
void CDvsUserDlg::OnShortcutRefresh() 
{
	AddVideoList();	
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::OnSCSwitchVideo(WPARAM wParam, LPARAM lParam)
{
WORD wCard;
WORD wBrance;
DWORD dwSView;
	
	wCard	= HIWORD(wParam);
	wBrance	= LOWORD(wParam);
	dwSView	= DWORD(lParam);
	::Sleep(1000);
	DealShortcutLink((DWORD)wCard, (DWORD)wBrance, dwSView, 0);
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------
VOID CDvsUserDlg::SC_OnRefreshTitle(int iTitle)
{
	switch (iTitle) {
	case 0:
		m_view1_bar.SetTitle(_T("万力电子远程监控系统"));
		break;
	case 1:
		m_view2_bar.SetTitle(_T("万力电子远程监控系统"));
		break;
	case 2:
		m_view3_bar.SetTitle(_T("万力电子远程监控系统"));
		break;
	case 3:
		m_view4_bar.SetTitle(_T("万力电子远程监控系统"));
		break;
	}
	
}
//--------------------------------------------------------------------
//
//
//
//--------------------------------------------------------------------

⌨️ 快捷键说明

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