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

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

?? itemdlg.cpp

?? opc 源碼 opc 源碼
?? CPP
字號:
// ItemDlg.cpp : implementation file
//

#include "stdafx.h"
#include "VCOPCClient.h"
#include "ItemDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CItemDlg dialog


CItemDlg::CItemDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CItemDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CItemDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_pView = NULL;
	m_hCurItem = NULL;
}

CItemDlg::~CItemDlg()
{
	RemoveItemStr();	
}

void CItemDlg::RemoveItemStr()
{
	for( vector<CString*>::iterator iter = vItemID.begin();
	iter != vItemID.end();
	++iter)
	{
		delete *iter;
	}
	vItemID.clear();
}

void CItemDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CItemDlg)
	DDX_Control(pDX, IDC_TREE_TAG, m_tvTags);
	DDX_Control(pDX, IDC_COMBO_OPCSERVER, m_cmbOPCServer);
	DDX_Control(pDX, IDC_COMBO_GROUP, m_cmbGroup);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CItemDlg, CDialog)
	//{{AFX_MSG_MAP(CItemDlg)
	ON_CBN_SELCHANGE(IDC_COMBO_OPCSERVER, OnSelchangeComboOpcserver)
	ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREE_TAG, OnItemexpandingTreeTag)
	ON_NOTIFY(NM_DBLCLK, IDC_TREE_TAG, OnDblclkTreeTag)
	ON_BN_CLICKED(IDC_BUTTON_ADDTAG, OnButtonAddtag)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CItemDlg message handlers
void CItemDlg::PopulateGroup(CString& strServer)
{
	if ( ! strServer.IsEmpty() )
	{
		CConnection* pConn = m_pView->GetConnection(strServer);
		if ( NULL != pConn )
		{
			m_cmbGroup.ResetContent();
			
			for( vector<CGroup*>::iterator iter = pConn->m_Groups.begin();
			     iter != pConn->m_Groups.end();
				 ++iter)
			{
				m_cmbGroup.AddString((*iter)->m_Name);
			}
		}
	}
}

void CItemDlg::BrowseTags(HANDLE hServer)
{
	vector<CString> vParent;
	
	//先將瀏覽的位置移動到相應的位置
	if ((m_hCurItem != NULL) )
	{
		if ( !m_tvTags.GetItemText(m_tvTags.GetChildItem(m_hCurItem)).IsEmpty() )
			return;
		
		HTREEITEM TempHItem = m_hCurItem;
		do
		{
			vParent.push_back(m_tvTags.GetItemText(TempHItem));
		} while( TempHItem = m_tvTags.GetParentItem(TempHItem) );
		
		for( vector<CString>::reverse_iterator iter = vParent.rbegin();
			iter != vParent.rend();
			++iter )
		{
			ChangeBrowsePosition(hServer, OPC_BROWSE_DOWN, (*iter));
		}
	}

	//顯示當前位置的分支標簽
	int nCount = BrowseItems(hServer, OPC_BRANCH);
	for( int i = 0; i < nCount; ++i)
	{
		char buf[255];
		if ( GetItemName(hServer, i, buf, 255) )
		{
			HTREEITEM treeNode = m_tvTags.InsertItem(buf, m_hCurItem);

			TVITEM tvItem;
			tvItem.mask = TVIF_CHILDREN;
			tvItem.hItem = treeNode;
			tvItem.cChildren = 1;
			m_tvTags.SetItem(&tvItem);

			if (GetItemFullName(hServer, i, buf, 255))
			{
				CString* pStr = new CString(buf);
				m_tvTags.SetItemData(treeNode, DWORD(pStr));
				vItemID.push_back(pStr);
			} 			
		}
	}

	//顯示當前位置的葉子標簽
	nCount = BrowseItems(hServer, OPC_LEAF);
	for( i = 0; i < nCount; ++i)
	{
		char buf[255];
		if ( GetItemName(hServer, i, buf, 255) )
		{
			HTREEITEM treeNode = m_tvTags.InsertItem(buf, m_hCurItem);
			if (GetItemFullName(hServer, i, buf, 255))
			{
				CString* pStr = new CString(buf);
				m_tvTags.SetItemData(treeNode, DWORD(pStr));
				vItemID.push_back(pStr);
			} 			
		}
	}	

	//再將位置移回到初始位置
	if ( (m_hCurItem != NULL) )
	{
		for( UINT j = 0; j < vParent.size(); ++j)
		{
			ChangeBrowsePosition(hServer, OPC_BROWSE_UP, "");
		}
	}
}

void CItemDlg::ListTags()
{
	int nIndex = m_cmbOPCServer.GetCurSel();
	CString strServer;
	m_cmbOPCServer.GetLBText(nIndex, strServer);
	CConnection* pConn = m_pView->GetConnection(strServer);

	if ( NULL == pConn ) 
		return;

	nIndex = m_cmbGroup.GetCurSel();
	CGroup* pGroup = NULL;
	if ( nIndex >= 0 )
	{
		CString strGroup;
		m_cmbGroup.GetLBText(nIndex, strGroup);
		pGroup = pConn->GetGroup(strGroup);		
	}
	if ( NULL == pGroup )
	{
		MessageBox("請為此服務器至少添加一個組!");
		return;
	}

	WORD wNameSpace;
	int nCount = 0;
	if ( GetNameSpace(pConn->m_hServer, &wNameSpace) )
	{
		if ( wNameSpace == OPC_NS_HIERARCHIAL )
		{
			BrowseTags(pConn->m_hServer);
		}
		else if ( wNameSpace == OPC_NS_FLAT )
		{
			nCount = BrowseItems(pConn->m_hServer, OPC_FLAT);
			for( int i = 0; i < nCount; ++i )
			{
				char buf[255];
				HTREEITEM treeNode;
				if ( GetItemName(pConn->m_hServer, i, buf, 255) )
				{
					treeNode = m_tvTags.InsertItem(buf);
				}
				if (GetItemFullName(pConn->m_hServer, i, buf, 255))
				{
					CString* pStr = new CString(buf);
					m_tvTags.SetItemData(treeNode, DWORD(pStr));
					vItemID.push_back(pStr);
				} 
			}
		}
	}
}

BOOL CItemDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	for( vector<CConnection*>::iterator iter = m_pView->m_Connections.begin();
		 iter != m_pView->m_Connections.end(); 
		 ++iter)
	{
		m_cmbOPCServer.AddString((*iter)->m_ServerName);
	}
	m_cmbOPCServer.SetCurSel(0);

	CString strServer;
	m_cmbOPCServer.GetLBText(0, strServer);

	PopulateGroup(strServer);	
	m_cmbGroup.SetCurSel(0);

	ListTags();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CItemDlg::OnSelchangeComboOpcserver() 
{
	int nIndex = m_cmbOPCServer.GetCurSel();
	CString strServer;
	m_cmbOPCServer.GetLBText(nIndex, strServer);

	PopulateGroup(strServer);
	m_cmbGroup.SetCurSel(0);

	m_tvTags.DeleteAllItems();
	RemoveItemStr();
	m_hCurItem = NULL;
	
	ListTags();		
}

void CItemDlg::OnItemexpandingTreeTag(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	
	m_hCurItem = pNMTreeView->itemNew.hItem;
	ListTags();
	
	*pResult = 0;
}

void CItemDlg::OnDblclkTreeTag(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnButtonAddtag(); 
	
	*pResult = 0;
}

void CItemDlg::AddTag(CString strItemID)
{
	int nIndex = m_cmbOPCServer.GetCurSel();
	CString strServer;
	m_cmbOPCServer.GetLBText(nIndex, strServer);
	CConnection* pConn = m_pView->GetConnection(strServer);
	
	if ( NULL == pConn ) 
		return;
	
	nIndex = m_cmbGroup.GetCurSel();
	CString strGroup;
	m_cmbGroup.GetLBText(nIndex, strGroup);
	CGroup* pGroup = pConn->GetGroup(strGroup);
	
	if ( NULL == pGroup )
		return;

	m_pView->AddTagtoList(pConn, pGroup, strItemID);
}

void CItemDlg::OnButtonAddtag() 
{
	HTREEITEM hSelectedItem = m_tvTags.GetSelectedItem();
	if ( m_tvTags.ItemHasChildren(hSelectedItem) )
		return;
	
	CString strItem = m_tvTags.GetItemText(hSelectedItem);
	CString strItemID = *((CString*)m_tvTags.GetItemData(hSelectedItem));
	
	AddTag(strItemID);
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色|porny| bt欧美亚洲午夜电影天堂| 国产亚洲欧美激情| 欧美日韩一区二区三区在线看| 经典三级一区二区| 亚洲黄色免费网站| 久久网这里都是精品| 欧美精品乱人伦久久久久久| 成人国产视频在线观看| 久久精品国产亚洲5555| 亚洲精品写真福利| 久久嫩草精品久久久精品| 欧美女孩性生活视频| 97久久超碰精品国产| 国产精品自在欧美一区| 日韩av电影免费观看高清完整版 | 久久久不卡影院| 欧美日韩午夜精品| 91欧美一区二区| 国产91丝袜在线18| 久久99精品久久久久久国产越南| 亚洲国产视频在线| 亚洲摸摸操操av| 中文成人av在线| 久久久精品2019中文字幕之3| 欧美乱妇一区二区三区不卡视频| 99国内精品久久| 成人深夜福利app| 国产一区二区伦理片| 蜜臀99久久精品久久久久久软件| 无吗不卡中文字幕| 午夜一区二区三区在线观看| 一区二区三区丝袜| 一区二区三区在线观看动漫| 亚洲欧美欧美一区二区三区| 亚洲视频香蕉人妖| 玉米视频成人免费看| **性色生活片久久毛片| 国产精品久久毛片| 国产精品国产精品国产专区不蜜| 国产亚洲欧美日韩俺去了| 欧美v日韩v国产v| 精品捆绑美女sm三区| 6080午夜不卡| 91精品国产美女浴室洗澡无遮挡| 欧美色综合天天久久综合精品| 欧美怡红院视频| 欧美日韩综合在线| 欧美日韩第一区日日骚| 欧美日韩国产高清一区二区| 欧美日韩高清一区二区三区| 69av一区二区三区| 精品人在线二区三区| 精品对白一区国产伦| 亚洲高清视频在线| 亚洲高清中文字幕| 日韩国产精品久久久久久亚洲| 香蕉久久一区二区不卡无毒影院 | 亚洲啪啪综合av一区二区三区| 亚洲三级在线免费| 亚洲综合激情另类小说区| 洋洋成人永久网站入口| 午夜免费久久看| 免费观看在线综合色| 国产在线国偷精品产拍免费yy | 捆绑调教美女网站视频一区| 韩国中文字幕2020精品| 高清国产一区二区三区| 99视频一区二区三区| 色网站国产精品| 欧美日韩成人高清| 久久亚洲一区二区三区明星换脸| 国产精品无遮挡| 亚洲一区二区在线免费看| 日韩经典中文字幕一区| 精品午夜一区二区三区在线观看| 丁香婷婷综合五月| 欧美无砖专区一中文字| 日韩精品一区二区三区视频在线观看 | 波多野结衣在线一区| 在线观看精品一区| 欧美α欧美αv大片| 一区免费观看视频| 日本欧美一区二区| 国产宾馆实践打屁股91| 欧美午夜片在线观看| 精品久久人人做人人爽| 亚洲精品国产一区二区精华液| 久久精品国产一区二区三 | 免费人成在线不卡| 白白色 亚洲乱淫| 在线91免费看| 亚洲欧洲日本在线| 麻豆精品久久久| 在线欧美一区二区| 久久新电视剧免费观看| 亚洲精品视频观看| 国产精品夜夜嗨| 欧美理论在线播放| 亚洲色图丝袜美腿| 免播放器亚洲一区| 色婷婷综合激情| 久久久久成人黄色影片| 日本成人在线一区| 色综合久久久久网| 国产欧美综合在线观看第十页| 无吗不卡中文字幕| 色婷婷综合久久久久中文| 国产人伦精品一区二区| 欧美bbbbb| 欧美午夜视频网站| 亚洲三级在线免费观看| 成人av资源在线观看| 久久午夜色播影院免费高清 | 日韩在线卡一卡二| 一本色道久久加勒比精品| 久久精子c满五个校花| 秋霞午夜鲁丝一区二区老狼| 91福利国产成人精品照片| 国产精品久久国产精麻豆99网站| 久久精品国产免费看久久精品| 欧美三级资源在线| 亚洲制服丝袜av| 色综合天天做天天爱| 国产精品久久福利| 国产成人亚洲精品狼色在线| 欧美电影精品一区二区| 毛片av一区二区三区| 欧美高清视频不卡网| 亚洲午夜免费福利视频| 色婷婷激情一区二区三区| 日韩一区在线播放| 99视频有精品| 国产精品不卡一区| 不卡的看片网站| 亚洲三级小视频| 一本色道**综合亚洲精品蜜桃冫| 日韩一区在线免费观看| 99免费精品视频| 亚洲人成影院在线观看| 99热99精品| 尤物在线观看一区| 色菇凉天天综合网| 亚洲图片欧美色图| 欧美绝品在线观看成人午夜影视| 香蕉久久夜色精品国产使用方法 | 国产传媒一区在线| 国产精品色噜噜| 91在线播放网址| 亚洲永久免费av| 欧美日本一区二区三区| 男人的天堂久久精品| 日韩欧美国产三级| 国产成人精品aa毛片| 国产精品麻豆欧美日韩ww| 91一区二区三区在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 中文字幕在线不卡| 91啪九色porn原创视频在线观看| 亚洲精品日日夜夜| 91精品国产欧美日韩| 国产精品91一区二区| 国产精品美女一区二区| 欧美综合色免费| 免费人成精品欧美精品| 久久一夜天堂av一区二区三区 | 欧美日韩一区二区三区四区五区| 日韩福利视频导航| 久久免费国产精品| av不卡免费在线观看| 亚洲国产精品一区二区久久| 91精品午夜视频| 国产成人精品aa毛片| 亚洲一区日韩精品中文字幕| 欧美一区二区三区在| 国产宾馆实践打屁股91| 樱桃视频在线观看一区| 日韩一区二区视频| 成人免费毛片高清视频| 亚洲最新视频在线观看| 精品美女被调教视频大全网站| a在线播放不卡| 天天亚洲美女在线视频| 国产欧美一区视频| 欧美日韩视频一区二区| 国产精品一区二区在线播放| 亚洲第一福利一区| 欧美国产一区二区在线观看| 欧美绝品在线观看成人午夜影视 | 欧美群妇大交群中文字幕| 国产精品自拍av| 亚洲综合成人在线视频| 久久精品欧美日韩精品| 欧美乱熟臀69xxxxxx| 成人亚洲一区二区一| 午夜不卡在线视频| 亚洲私人黄色宅男| 精品国产一区二区三区忘忧草| 色综合久久久久综合| 国产a级毛片一区|