亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cyclemonitor.cpp

?? 它是一個可以實時交互的嵌入式軟件系統
?? CPP
字號:
``````// CycleMonitor.cpp : implementation file
//

#include "stdafx.h"
#include "netsdkdemo.h"
#include "CycleMonitor.h"
#include "CycleChild.h"
#include "netsdkdemodlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCycleMonitor dialog
#define TEMP_CHANNUM 9

CCycleMonitor::CCycleMonitor(CWnd* pParent /*=NULL*/)
	: CDialog(CCycleMonitor::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCycleMonitor)
	//}}AFX_DATA_INIT
}


void CCycleMonitor::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCycleMonitor)
	DDX_Control(pDX, IDC_ALLCHANNEL_LIST, m_channellist);
	DDX_Control(pDX, IDC_SCREEN_TAB, m_ScreenTabControl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCycleMonitor, CDialog)
	//{{AFX_MSG_MAP(CCycleMonitor)
	ON_NOTIFY(TCN_SELCHANGE, IDC_SCREEN_TAB, OnSelchangeScreenTab)
	ON_BN_CLICKED(IDC_ADD1, OnAdd1)
	ON_BN_CLICKED(IDC_ADDALL, OnAddall)
	ON_BN_CLICKED(IDC_DELETE1, OnDelete1)
	ON_BN_CLICKED(IDC_DELETEALL, OnDeleteall)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCycleMonitor message handlers

void CCycleMonitor::OnOK() 
{
	for (int i = 0; i < TEMP_CHANNUM; i++)
	{
		m_cyclechild[i].OnOK();
	}
	//清除內存泄露
	for (int j = 0; j < m_curRow; j++)
	{
		if (m_channellist.GetItemText(j, 1) != "") 
		{
			delete (CycleChannelInfo *)m_channellist.GetItemData(j);
		}
	}
	CDialog::OnOK();
}

//init cyclemonitor config left tree
int InitLeftTreeCallBack(const DeviceNode& node, DWORD dwUser)
{
	CCycleMonitor* pThis = (CCycleMonitor*)dwUser;
	if (!pThis)
	{
		return 1; //end callback
	}

	return pThis->InitLeftTreeCallBack_Imp(node);
}

int CCycleMonitor::InitLeftTreeCallBack_Imp(const DeviceNode& node)
{
	CString strDev, strCh;

	strDev.Format(" %s (%s):",node.Name, node.IP);
	m_channellist.InsertItem(m_curRow, strDev);
	m_channellist.SetItemText(m_curRow, 1, "");
	m_channellist.SetItemData(m_curRow,(DWORD)(&node));
	m_curRow++;	

	CNetSDKDemoDlg *pMain = (CNetSDKDemoDlg *)AfxGetMainWnd();
	if (!pMain)
	{
		return 1;
	}

	SplitInfoNode siNode;
	memset(&siNode, 0, sizeof(SplitInfoNode));
	//通道顯示
	for(int chlCounter = 0; chlCounter < node.Info.byChanNum; chlCounter++)
	{
		//只顯示未被列入輪循列表并且未被監視的通道項
		BOOL found = FALSE;
		//在每個輪循畫面窗口的參數中查詢
		for (int x = 0; x < TEMP_CHANNUM; x++)
		{
			pMain->GetSplitInfo_Main(x, &siNode);
			if (siNode.Type == SPLIT_TYPE_CYCLEMONITOR) 
			{
				POSITION pos;
				pos = ((SplitCycleParam *)siNode.Param)->pChannelList->GetHeadPosition();
				for (int y = 0; y < ((SplitCycleParam *)siNode.Param)->iChannelCount; y++ )
				{
					CycleChannelInfo *tempnode;
					tempnode = (CycleChannelInfo *)((SplitCycleParam *)siNode.Param)->pChannelList->GetNext(pos);
					if ((tempnode->dwDeviceID == (DWORD)(&node)) 
						&& (tempnode->iChannel == chlCounter))
					{
						found = TRUE;
						break;
					}
				}
				if (found) 
				{
					break;
				}
			}//if (siNode.Type == SPLIT_TYPE_CYCLEMONITOR) 
			if (siNode.Type == SPLIT_TYPE_MONITOR) 
			{
				if (((SplitMonitorParam *)siNode.Param)->pDevice->LoginID == node.LoginID
					 && ((SplitMonitorParam *)siNode.Param)->iChannel == chlCounter)
				{
					found = TRUE;
					break;
				}
			}
		}//for (int x = 0; x < TEMP_CHANNUM; x++)
		if (found) 
		{
			continue;
		}
		strCh.Format("chl %02d", chlCounter+1);
		m_channellist.InsertItem(m_curRow,strDev);
		m_channellist.SetItemText(m_curRow, 1, strCh);
		CycleChannelInfo *tempInfo = new(CycleChannelInfo);
		tempInfo->dwDeviceID = (DWORD)(&node);
		tempInfo->iChannel = chlCounter;
		m_channellist.SetItemData(m_curRow, (DWORD)tempInfo);
		m_curRow++;
	}//end of for(int chlCounter = 0; chlCounter < nDev->Info.byChanNum; chlCounter++)
	
	return 0;
}

BOOL CCycleMonitor::OnInitDialog() 
{
	CDialog::OnInitDialog();
	g_SetWndStaticText(this);

	//確定屬性頁子窗口的位置
	CRect rect;
	m_ScreenTabControl.GetClientRect(rect);
	rect.top += 30;
	rect.bottom -= 4;
	rect.left += 4;
	rect.right -= 4;

	for (int i = 0; i < TEMP_CHANNUM; i++)
	{
		//初始化屬性頁各子窗口
		CString childtitle;
		childtitle.Format(" %d",i + 1);
		childtitle = NAME_SCRN + childtitle;
		
		m_ScreenTabControl.InsertItem(i,childtitle);
		m_cyclechild[i].SetScreenNo(i);
		m_cyclechild[i].Create(IDD_CYCLE_CHILD, GetDlgItem(IDC_SCREEN_TAB));
		m_cyclechild[i].MoveWindow(rect);
	 	m_cyclechild[i].ShowWindow(SW_HIDE);
	}
	
	m_cyclechild[0].ShowWindow(SW_NORMAL);
	m_ScreenTabControl.SetCurSel(0);
	m_curChild = 0;
	m_curRow = 0;
	
	//初始化設備和通道列表
	m_channellist.SetExtendedStyle(m_channellist.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
	m_channellist.InsertColumn(0, NAME_DEVICE, LVCFMT_LEFT, 120, 0);
	m_channellist.InsertColumn(1, NAME_CHANNEL, LVCFMT_LEFT, 70, 1);
	
	CDevMgr::GetDevMgr().For_EachDev(InitLeftTreeCallBack, (DWORD)this);
	return TRUE; 
}


void CCycleMonitor::OnSelchangeScreenTab(NMHDR* pNMHDR, LRESULT* pResult) 
{
	int nCurSel = m_ScreenTabControl.GetCurSel();
	if (nCurSel != m_curChild)
	{
		m_cyclechild[nCurSel].ShowWindow(SW_SHOW);
		m_cyclechild[m_curChild].ShowWindow(SW_HIDE);
		m_curChild = nCurSel;
	}
	
	*pResult = 0;
}


void CCycleMonitor::OnAdd1() 
{
	int rightindex;
	int leftindex = m_channellist.GetSelectionMark();
	if (leftindex == -1) 
	{
		return;
	}

	//這里取出來的item data不一定是Device節點,判斷時不讀取其成員,不會有問題
	DWORD itemData = m_channellist.GetItemData(leftindex);

	BOOL bRet = CDevMgr::GetDevMgr().IsOnline((DeviceNode *)itemData);
	if (!bRet)
	{
		rightindex = m_cyclechild[m_curChild].GetCurRow();
		AddItem(leftindex, rightindex);
	}
	else
	{
		//將整個設備的表項都添加到右邊輪循列表
		int addindex = 0;
		int dotimes = m_curRow;
		for (int i = 0; i < dotimes; i++)
		{
			if (CDevMgr::GetDevMgr().IsOnline((DeviceNode *)m_channellist.GetItemData(addindex))) 
			{
				addindex ++;
				continue;
			}

			CycleChannelInfo *tempnode = (CycleChannelInfo *)m_channellist.GetItemData(addindex);
			if (tempnode->dwDeviceID != itemData)
			{
				addindex ++;
				continue;
			}

			if (tempnode->dwDeviceID == itemData)
			{
				rightindex = m_cyclechild[m_curChild].GetCurRow();
				AddItem(addindex, rightindex);					
			}
		}
		return;
	}



	/*
	POSITION nPos;	
	nPos = g_ptrdevicelist->GetHeadPosition();
	for(int devCounter = 0; devCounter < g_ptrdevicelist->GetCount(); devCounter ++ )
	{
		//是否選擇整個設備
		nDev = (DeviceNode *)g_ptrdevicelist->GetNext(nPos);
		if (m_channellist.GetItemData(leftindex) == (DWORD)nDev)
		{
			//將整個設備的表項都添加到右邊輪循列表
			int addindex = 0;
			int dotimes = m_curRow;
			for (int i = 0; i < dotimes; i++)
			{
				if (m_channellist.GetItemText(addindex, 1) == "") 
				{
					addindex ++;
					continue;
				}
				
				CycleChannelInfo *tempnode = (CycleChannelInfo *)m_channellist.GetItemData(addindex);
				if (tempnode->dwDeviceID != (DWORD)nDev)
				{
					addindex ++;
					continue;
				}

				if (tempnode->dwDeviceID == (DWORD)nDev)
				{
					rightindex = m_cyclechild[m_curChild].GetCurRow();
					AddItem(addindex, rightindex);					
				}
			}
		return;
		}
		
	}
	*/

}

void CCycleMonitor::OnAddall() 
{
	int leftindex = 0;
	int rightindex;

	int dotimes = m_curRow;
	DWORD itemData;
	
	for (int i = 0; i < dotimes; i++)
	{
		itemData = m_channellist.GetItemData(leftindex);
		if (CDevMgr::GetDevMgr().IsOnline((DeviceNode *)itemData))
		{
			leftindex++;
			continue;
		}
		
		rightindex = m_cyclechild[m_curChild].GetCurRow();
		AddItem(leftindex, rightindex);
	}
}

void CCycleMonitor::OnDelete1() 
{
	DeleteItem(m_cyclechild[m_curChild].GetSelectionMark());
}

void CCycleMonitor::OnDeleteall() 
{
	int dotimes = m_cyclechild[m_curChild].GetCurRow();
	for (int i = 0; i < dotimes; i++)
	{
		DeleteItem(0);
	}
}

void CCycleMonitor::DeleteItem(int rightindex)
{
	if (rightindex != -1) 
	{	
		//查找正確的插入位置
		DWORD dwDev = ((CycleChannelInfo *)m_cyclechild[m_curChild].GetItemData(rightindex))->dwDeviceID;
		int iChl = ((CycleChannelInfo *)m_cyclechild[m_curChild].GetItemData(rightindex))->iChannel;
		int leftindex = m_curRow;//初始化為最后一個位置
		for (int i = 0; i < m_curRow; i++)
		{
			if (m_channellist.GetItemData(i) == dwDev) 
			{
				leftindex = i + 1;
			}
			else if (!CDevMgr::GetDevMgr().IsOnline(m_channellist.GetItemData(i)) &&
				((CycleChannelInfo *)m_channellist.GetItemData(i))->dwDeviceID == dwDev) 
			{
				if (((CycleChannelInfo *)m_channellist.GetItemData(i))->iChannel < iChl) 
				{
					leftindex = i + 1;
				}
			}
		}
		
		m_channellist.InsertItem(leftindex, m_cyclechild[m_curChild].GetItemText(rightindex, 0));
		m_channellist.SetItemText(leftindex, 1, m_cyclechild[m_curChild].GetItemText(rightindex, 1));
		m_channellist.SetItemData(leftindex, m_cyclechild[m_curChild].GetItemData(rightindex));
		m_cyclechild[m_curChild].DeleteItem(rightindex);
		m_curRow++;
		leftindex = m_curRow;
	}
}

void CCycleMonitor::AddItem(int lindex, int rindex)
{
	m_cyclechild[m_curChild].InsertItem(rindex, m_channellist.GetItemText(lindex, 0));
	m_cyclechild[m_curChild].SetItemText(rindex, 1, m_channellist.GetItemText(lindex, 1));
	m_cyclechild[m_curChild].SetItemData(rindex, m_channellist.GetItemData(lindex));
	m_channellist.DeleteItem(lindex);
	m_curRow--;
	m_channellist.SetFocus();
}

void CCycleMonitor::OnCancel() 
{
	for (int i = 0; i < TEMP_CHANNUM; i++)
	{
		m_cyclechild[i].OnCancel();
	}
	//清除內存泄露
	for (int j = 0; j < m_curRow; j++)
	{
		if (m_channellist.GetItemText(j, 1) != "") 
		{
			delete (CycleChannelInfo *)m_channellist.GetItemData(j);
		}
	}
	CDialog::OnCancel();
}

void CCycleMonitor::OnClose() 
{
	OnCancel();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲h动漫在线| 国产亚洲欧美日韩俺去了| 欧美一级二级在线观看| 2020国产精品| 亚洲黄色小说网站| 91精品国产高清一区二区三区蜜臀 | 欧美伦理影视网| 久久亚洲欧美国产精品乐播| 亚洲色图欧洲色图| 蜜臀av性久久久久av蜜臀妖精| 国产成人精品亚洲777人妖| 欧美羞羞免费网站| 精品电影一区二区三区| 亚洲色图制服丝袜| 精油按摩中文字幕久久| www.亚洲免费av| 91精品国产综合久久久蜜臀图片 | 成人深夜视频在线观看| 欧美日韩小视频| 久久久www成人免费毛片麻豆| 亚洲综合图片区| 国产高清视频一区| 欧美嫩在线观看| 日韩理论电影院| 久久国产精品一区二区| 欧美性大战久久| 国产精品免费观看视频| 日本成人超碰在线观看| 国产精品嫩草久久久久| 日韩专区中文字幕一区二区| 成人毛片老司机大片| 91精品国产高清一区二区三区蜜臀| 国产精品久久久久久久第一福利| 免费一级片91| 欧美在线观看18| 国产精品福利一区| 国产在线国偷精品免费看| 欧美日韩美少妇| 亚洲天堂久久久久久久| 国产成人亚洲综合a∨婷婷图片| 6080亚洲精品一区二区| 亚洲免费观看高清| 不卡一卡二卡三乱码免费网站| 日韩一区二区免费高清| 亚洲一区二区在线视频| bt欧美亚洲午夜电影天堂| 精品久久久久久最新网址| 视频一区欧美日韩| 欧美在线999| 亚洲三级在线观看| 成人黄色在线网站| 国产欧美精品一区二区色综合| 日韩午夜小视频| 亚洲午夜在线电影| 91片黄在线观看| 国产精品久久三区| 粉嫩绯色av一区二区在线观看 | 久久国产精品免费| 91精品在线免费观看| 香港成人在线视频| 欧美专区在线观看一区| 亚洲乱码精品一二三四区日韩在线| 国产iv一区二区三区| 国产喂奶挤奶一区二区三区| 国产一区二三区好的| 精品国产髙清在线看国产毛片| 日韩电影在线一区| 欧美精品久久一区| 日本女优在线视频一区二区| 欧美精品久久一区| 欧美96一区二区免费视频| 欧美男人的天堂一二区| 丝袜美腿亚洲一区| 日韩午夜在线影院| 激情五月婷婷综合| 欧美极品少妇xxxxⅹ高跟鞋| 国产成人午夜片在线观看高清观看| 久久久久久免费毛片精品| 国产精品资源网站| 国产亚洲欧美日韩日本| 成人精品在线视频观看| 国产精品嫩草99a| 99久久免费视频.com| 亚洲视频一区二区免费在线观看| av电影天堂一区二区在线观看| 国产精品美女视频| 色哟哟一区二区三区| 亚洲国产精品麻豆| 日韩一区国产二区欧美三区| 韩日精品视频一区| 国产精品剧情在线亚洲| 欧美在线观看视频一区二区| 日韩av在线播放中文字幕| 欧美sm美女调教| 高清国产一区二区| 亚洲女同女同女同女同女同69| 欧美三电影在线| 伦理电影国产精品| 国产精品久线观看视频| 亚洲综合视频网| 日韩午夜av电影| 从欧美一区二区三区| 亚洲人精品一区| 欧美一级欧美三级在线观看| 国产黄人亚洲片| 亚洲天堂网中文字| 日韩欧美一区在线| 成人一道本在线| 亚洲午夜成aⅴ人片| 日韩精品一区二区在线观看| 成人午夜私人影院| 亚洲午夜久久久久久久久电影网| 精品乱人伦一区二区三区| 成人免费高清在线观看| 亚洲成人激情av| 久久久国产精品不卡| 91国产福利在线| 国产一区二区三区国产| 亚洲欧美激情插| 精品福利一区二区三区| 99麻豆久久久国产精品免费| 日韩成人一区二区三区在线观看| 国产日韩欧美麻豆| 欧美日韩国产123区| 国产成人免费视| 首页综合国产亚洲丝袜| 国产精品美女一区二区三区| 这里是久久伊人| 91在线一区二区三区| 久久国产精品99久久人人澡| 亚洲精品国久久99热| 久久一二三国产| 欧美日韩国产欧美日美国产精品| 成人深夜在线观看| 久久成人精品无人区| 一区二区三区精品视频在线| 久久中文字幕电影| 欧美剧在线免费观看网站| 国产69精品久久久久777| 日韩va亚洲va欧美va久久| 综合自拍亚洲综合图不卡区| 精品国内片67194| 欧美性猛交xxxxxx富婆| 国产成人精品一区二| 另类小说图片综合网| 亚洲国产成人精品视频| 中文字幕日韩一区| 久久只精品国产| 欧美一级片免费看| 欧美图区在线视频| 91在线丨porny丨国产| 国产老女人精品毛片久久| 亚洲bdsm女犯bdsm网站| 亚洲日本电影在线| 亚洲国产精品99久久久久久久久 | 久久电影国产免费久久电影| 亚洲大型综合色站| 亚洲免费观看视频| 中文字幕一区二区三区乱码在线| 26uuu亚洲综合色欧美| 欧美一区二区三区的| 欧洲亚洲精品在线| 91麻豆视频网站| www.日韩精品| 成人美女在线观看| 国产成人精品免费| 国产一区二区三区黄视频| 激情成人午夜视频| 久久国产视频网| 日韩欧美成人激情| 欧美精品第1页| 欧美日韩大陆在线| 欧美性受极品xxxx喷水| 色屁屁一区二区| 色综合久久中文字幕| 色哟哟一区二区在线观看| 91蝌蚪国产九色| 色播五月激情综合网| 色菇凉天天综合网| 在线观看av一区二区| 欧美视频一区在线| 欧美日韩三级在线| 欧美精品一卡二卡| 制服丝袜亚洲精品中文字幕| 欧美一区二区人人喊爽| 欧美一区二区视频网站| 欧美一级一区二区| 26uuu欧美| 国产精品热久久久久夜色精品三区| 亚洲国产精品黑人久久久| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品免费久久久久| 亚洲欧美一区二区三区极速播放 | 欧美日韩一区二区三区在线看 | 免费久久精品视频| 久久国产视频网| 国产凹凸在线观看一区二区| 成人福利电影精品一区二区在线观看| 国产精品香蕉一区二区三区| 波多野结衣中文字幕一区|