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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dlgopcserverlist.cpp

?? OPC Client 源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
			//
			pOPCBrowse->m_strPCName =*pstrPC;
			pOPCBrowse->m_strPCIP =*pstrIP;

		}
	}catch(...)
	{
		return false;
	}
	return true;
}

void CDlgOPCServerList::QueryOPCServer(CMapStringToPtr& cMapOPC,IOPCServerList *gpOPC,CLSID clsIDVersion)
{
	if(NULL==gpOPC)
		return;

	// 查詢OPC DA組件目錄接口指針
	IOPCEnumGUID *pEnumGUID;
	try{
		HRESULT hr = gpOPC->EnumClassesOfCategories( 
			1, &clsIDVersion, 
			1, &clsIDVersion, 
			(IEnumGUID**)&pEnumGUID); 
		if(S_OK!=hr)
			return;

		//獲得支持OPC DA數(shù)據(jù)服務(wù)器的CLSID
		CLSID clsid;
		clsid = CLSID_OpcServerList;	//在opcenum_i.c中定義
		unsigned long c;
		while (S_OK == pEnumGUID->Next(1, &clsid, &c)) 
		{
			LPOLESTR pszProgID;
			LPOLESTR pszUserType;
			hr = gpOPC->GetClassDetails(&clsid, &pszProgID, &pszUserType);

			//打印OPC數(shù)據(jù)服務(wù)器的有關(guān)信息
			TRACE("ProgID = %ls, UserType = %ls\n", pszProgID, pszUserType);
	#ifdef _UNICODE

			COPCInfo *pOPCInfo=new COPCInfo;

			pOPCInfo->m_strName =szProgID;
			pOPCInfo->m_strProgID =szProgID;
			pOPCInfo->m_strUserType =szUserType;
	#else
			TCHAR szProgID [DEFBUFFSIZE];
			TCHAR szUserType [DEFBUFFSIZE];

			_wcstombsz (szProgID, pszProgID, sizeof (szProgID) / sizeof (TCHAR));
			_wcstombsz (szUserType, pszUserType, sizeof (szUserType) / sizeof (TCHAR));
			
			COPCInfo *pOPCInfo=new COPCInfo;

			pOPCInfo->m_strName =szProgID;
			pOPCInfo->m_strProgID =szProgID;
			pOPCInfo->m_strUserType =szUserType;

			cMapOPC.SetAt (szProgID,pOPCInfo);
	#endif
			CoTaskMemFree(pszProgID);
			CoTaskMemFree(pszUserType);
		}

	}catch(...)
	{
		printf("\n創(chuàng)建組件異常錯(cuò)誤!\n");
	}
}

void CDlgOPCServerList::ShowOPCPC(COPCBrowse *pOPCBrowse)
{
	HTREEITEM hParent;
	HTREEITEM hOPCParent;
	HTREEITEM hOPCItem;

	UINT nMask=TVIF_IMAGE | TVIF_SELECTEDIMAGE |TVIF_TEXT| TVIF_PARAM;
//	hParent = m_ctrlTreeOPC.InsertItem (pOPCBrowse->m_strPCName , ILI_REMPC, ILI_REMPC,TVI_ROOT);
//	m_ctrlTreeOPC.SetItemData (hOPCParent,(DWORD)pOPCBrowse);
	//插入一個(gè)新的OPC Server PC
	hParent = m_ctrlTreeOPC.InsertItem (
		nMask,
		pOPCBrowse->m_strPCName,
		ILI_REMPC,
		ILI_REMPC,
		0,
		0,
		(LPARAM)pOPCBrowse,
		TVI_ROOT,
		TVI_SORT
		);

	CString strKey;
	COPCInfo* pOPCInfo;
	POSITION pos;
	//*
	//OPC1.0
//	hOPCParent = m_ctrlTreeOPC.InsertItem (lpszDataAccessServers10,ILI_CATAGORY, ILI_CATAGORY,hParent);
	hOPCParent = m_ctrlTreeOPC.InsertItem (
		nMask,
		lpszDataAccessServers10,
		ILI_CATAGORY,
		ILI_CATAGORY,
		0,
		0,
		(LPARAM)OPC_VER_10,
		hParent,
		TVI_LAST
		);

	pos=pOPCBrowse->m_cMapOPC10 .GetStartPosition ();
	while(pos)
	{
		pOPCBrowse->m_cMapOPC10.GetNextAssoc (pos,strKey,(void*&)pOPCInfo);
//		hOPCItem=m_ctrlTreeOPC.InsertItem (pOPCInfo->m_strProgID ,ILI_COMPONENT, ILI_COMPONENT,hOPCParent);
//		m_ctrlTreeOPC.SetItemData (hOPCItem,(DWORD)pOPCInfo);
		hOPCItem = m_ctrlTreeOPC.InsertItem (
			nMask,
			pOPCInfo->m_strProgID,
			ILI_COMPONENT,
			ILI_COMPONENT,
			0,
			0,
			(LPARAM)pOPCInfo,
			hOPCParent,
			TVI_SORT
			);
	}

	//OPC2.0
//	hOPCParent = m_ctrlTreeOPC.InsertItem (lpszDataAccessServers20,ILI_CATAGORY, ILI_CATAGORY,hParent);
	hOPCParent = m_ctrlTreeOPC.InsertItem (
		nMask,
		lpszDataAccessServers20,
		ILI_CATAGORY,
		ILI_CATAGORY,
		0,
		0,
		(LPARAM)OPC_VER_20,
		hParent,
		TVI_LAST
		);

	pos=pOPCBrowse->m_cMapOPC20 .GetStartPosition ();
	while(pos)
	{
		pOPCBrowse->m_cMapOPC20.GetNextAssoc (pos,strKey,(void*&)pOPCInfo);
//		hOPCItem=m_ctrlTreeOPC.InsertItem (pOPCInfo->m_strProgID  ,ILI_COMPONENT, ILI_COMPONENT,hOPCParent);
//		m_ctrlTreeOPC.SetItemData (hOPCItem,(DWORD)pOPCInfo);
		hOPCItem = m_ctrlTreeOPC.InsertItem (
			nMask,
			pOPCInfo->m_strProgID,
			ILI_COMPONENT,
			ILI_COMPONENT,
			0,
			0,
			(LPARAM)pOPCInfo,
			hOPCParent,
			TVI_SORT
			);
	}
	//OPC3.0
//	hOPCParent = m_ctrlTreeOPC.InsertItem (lpszDataAccessServers30,ILI_CATAGORY, ILI_CATAGORY,hParent);
	hOPCParent = m_ctrlTreeOPC.InsertItem (
		nMask,
		lpszDataAccessServers30,
		ILI_CATAGORY,
		ILI_CATAGORY,
		0,
		0,
		(LPARAM)OPC_VER_30,
		hParent,
		TVI_LAST
		);

	pos=pOPCBrowse->m_cMapOPC30 .GetStartPosition ();
	while(pos)
	{
		pOPCBrowse->m_cMapOPC30.GetNextAssoc (pos,strKey,(void*&)pOPCInfo);
//		hOPCItem=m_ctrlTreeOPC.InsertItem (pOPCInfo->m_strProgID ,ILI_COMPONENT, ILI_COMPONENT,hOPCParent);
//		m_ctrlTreeOPC.SetItemData (hOPCItem,(DWORD)pOPCInfo);
		hOPCItem = m_ctrlTreeOPC.InsertItem (
			nMask,
			pOPCInfo->m_strProgID,
			ILI_COMPONENT,
			ILI_COMPONENT,
			0,
			0,
			(LPARAM)pOPCInfo,
			hOPCParent,
			TVI_SORT
			);
	}
//*/
}

void CDlgOPCServerList::OnModify() 
{
	// TODO: Add your control notification handler code here

	//判斷是否修改
	if(m_bNameChanged)
	{
		UpdateData (TRUE);
		if(m_nSelItem==OPC_SERVER)
		{
			m_pSelOPCInfo->m_strName =m_strOPCName;
		}
		else if(m_nSelItem==OPC_PC)
		{
			m_pSelOPCBrowse->m_strPCName =m_strOPCName;
		}
		else
		{
			TRACE("m_nSelItem=OPC_NULL\n");
		}
		m_bNameChanged=FALSE;
	}
	CWnd* pBtn;
	pBtn=GetDlgItem (IDC_MODIFY);
	pBtn->EnableWindow (FALSE);
}

void CDlgOPCServerList::OnChangeEditName() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	m_bNameChanged=TRUE;
	CWnd* pBtn;
	pBtn=GetDlgItem (IDC_MODIFY);
	pBtn->EnableWindow (TRUE);
}

//增加OPC SERVER PC
void CDlgOPCServerList::OnAddOPCPC() 
{
	// TODO: Add your control notification handler code here
	CDlgOPCPC dlg;
	if(dlg.DoModal ()==IDOK)
	{
		if(!dlg.m_strIPAddr.IsEmpty())
		{
			COPCBrowse* pOPCBrowse=NULL;
			if(QueryOPCServer(&dlg.m_strPCName,&dlg.m_strIPAddr ,pOPCBrowse))
			{
				m_pcMapOPCBrowse->SetAt (dlg.m_strPCName,pOPCBrowse);
				
				BeginWaitCursor();

				ShowOPCPC(pOPCBrowse);

				EndWaitCursor();

			}
			else
			{
				CString strTip;
				strTip.Format(_T("%s[%s]沒有查詢到OPC Server"),dlg.m_strPCName,dlg.m_strIPAddr);
				AfxMessageBox(strTip);
			}
		}	
	}
}


//重新搜索OPC PC中的OPC SERVER
void CDlgOPCServerList::OnReflash() 
{
	// TODO: Add your control notification handler code here
	BeginWaitCursor();

	ASSERT(m_hSelItem);
	ASSERT(m_pSelOPCBrowse);
	
	m_ctrlTreeOPC.DeleteItem (m_hSelItem);

	CString strName=m_pSelOPCBrowse->m_strPCName ;
	CString strIP=m_pSelOPCBrowse->m_strPCIP ;
	m_pcMapOPCBrowse->RemoveKey (strName);
	delete m_pSelOPCBrowse;
	m_pSelOPCBrowse=NULL;

	COPCBrowse* pOPCBrowse=NULL;
	if(QueryOPCServer(&strName,&strIP,pOPCBrowse))
	{
		m_pcMapOPCBrowse->SetAt (strName,pOPCBrowse);
		ShowOPCPC(pOPCBrowse);
	}

	EndWaitCursor();
}

void CDlgOPCServerList::OnOK() 
{
	// TODO: Add extra validation here
	NameChanged();

	//1.OPC PC   計(jì)算機(jī)名稱
	m_strRemPC=m_pSelOPCBrowse->m_strPCName ;

	//2.OPC PC IP Address  計(jì)算機(jī)名稱
	m_strIPAddr=m_pSelOPCBrowse->m_strPCIP ;

	//3.OPC Server ProgID
	m_strProgID=m_pSelOPCInfo->m_strProgID ;

	//4.OPC Server  Name
	m_strOPCServerName=m_pSelOPCInfo->m_strName ;

	//5.OPC Version	不同的版本有不同的接口
//	m_unOPCVersion;	
	

	CDialog::OnOK();
}

void CDlgOPCServerList::NameChanged()
{
	if(m_bNameChanged)
	{
		UpdateData (TRUE);
		CString strTip;
		strTip.Format(_T("名稱:%s被修改為%s\n\n是否保存"),m_strOldOPCName,m_strOPCName);
		if(AfxMessageBox(strTip,MB_OKCANCEL| MB_ICONQUESTION)==IDOK)
		{
			if(m_nSelItem==OPC_SERVER)
			{
				m_pSelOPCInfo->m_strName =m_strOPCName;
			}
			else if(m_nSelItem==OPC_PC)
			{
				m_pSelOPCBrowse->m_strPCName =m_strOPCName;
			}
			else
			{
				TRACE("m_nSelItem=OPC_NULL\n");
			}
		}
		m_bNameChanged=FALSE;
	}
}

void CDlgOPCServerList::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(WM_TIMER_OPCBROWSE_EVENT==nIDEvent)
	{
		//
		KillTimer(WM_TIMER_OPCBROWSE_EVENT);

		//
		BeginWaitCursor();

		//
		ASSERT(m_pcMapOPCBrowse);
		if(m_pcMapOPCBrowse->GetCount ()<=0)	//讀取OPCSerer PC
		{
			//讀取本地OPC
			CString strLoacalName=LOACAL_PC_NAME;
			//獲取本地IP
			CString strLoacalIP=LOACAL_PC_NAME;
			//
			COPCBrowse* pOPCBrowse=NULL;
			if(QueryOPCServer(&strLoacalName,&strLoacalIP,pOPCBrowse))
				m_pcMapOPCBrowse->SetAt (strLoacalName,pOPCBrowse);

		}

		POSITION pos=m_pcMapOPCBrowse->GetStartPosition ();
		while(pos)
		{
			COPCBrowse* pOPCBrowse;
			CString strPCName;
			m_pcMapOPCBrowse->GetNextAssoc (pos,strPCName,(void*&)pOPCBrowse);

			ShowOPCPC(pOPCBrowse);
		}
	/*
		HTREEITEM hParent;

		//增加OPCDA1.0服務(wù)器
 		TRACE("\n%s\n",lpszDataAccessServers10);
		hParent = m_ctrlTreeOPC.InsertItem (lpszDataAccessServers10, ILI_CATAGORY, ILI_CATAGORY);
		BrowsOPCServer (hParent, CATID_OPCDAServer10);

		//增加OPCDA2.0服務(wù)器
 		TRACE("\n%s\n",lpszDataAccessServers20);
		hParent = m_ctrlTreeOPC.InsertItem (lpszDataAccessServers20, ILI_CATAGORY, ILI_CATAGORY);
		BrowsOPCServer (hParent, CATID_OPCDAServer20);

		//增加OPCDA3.0服務(wù)器
 		TRACE("\n%s\n",lpszDataAccessServers30);
		hParent = m_ctrlTreeOPC.InsertItem (lpszDataAccessServers30, ILI_CATAGORY, ILI_CATAGORY);
		BrowsOPCServer (hParent, CATID_OPCDAServer30);
		
		//增加OPC服務(wù)器----
	//	hParent = m_ctrlTreeOPC.InsertItem (lpszOPCServers, ILI_CATAGORY, ILI_CATAGORY);
	//	DisplayGeneralOPCServers (hParent);
	//*/
		EndWaitCursor();

	}

	CDialog::OnTimer(nIDEvent);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美变态tickle挠乳网站| 国产精品视频看| 成人av电影在线观看| 亚洲成人免费在线| 国产精品国产三级国产aⅴ入口| 欧美精品久久一区二区三区| 成人午夜私人影院| 蜜乳av一区二区三区| 夜夜嗨av一区二区三区四季av| 国产午夜精品久久久久久久| 51精品国自产在线| 欧美色偷偷大香| 91色视频在线| 国产成人精品1024| 国内久久精品视频| 日本亚洲三级在线| 亚洲主播在线观看| 亚洲欧美日韩电影| 中文字幕永久在线不卡| 久久久精品国产99久久精品芒果| 91麻豆精品国产91| 欧美性猛交xxxxxx富婆| 97久久人人超碰| 国产成人精品免费视频网站| 精品亚洲免费视频| 老鸭窝一区二区久久精品| 亚洲成年人影院| 亚洲欧美日韩成人高清在线一区| 国产精品网友自拍| 中文字幕精品一区二区三区精品| 久久综合国产精品| wwww国产精品欧美| 久久婷婷一区二区三区| 日韩欧美国产综合在线一区二区三区 | 波多野洁衣一区| 成人免费毛片嘿嘿连载视频| 国产乱妇无码大片在线观看| 激情图片小说一区| 国产精品一区二区久激情瑜伽| 国产一区在线不卡| 国产mv日韩mv欧美| 成人免费毛片片v| 91丨porny丨蝌蚪视频| 99久久久精品免费观看国产蜜| 成人午夜在线视频| 日本久久精品电影| 欧美在线视频日韩| 7777精品伊人久久久大香线蕉完整版 | 亚洲自拍欧美精品| 亚洲国产婷婷综合在线精品| 亚洲自拍都市欧美小说| 日韩精品亚洲一区二区三区免费| 日韩经典一区二区| 狠狠色丁香婷婷综合久久片| 国产精品中文欧美| 91最新地址在线播放| 在线日韩av片| 欧美一区二区视频观看视频| 日韩一级高清毛片| 日本一区二区三区国色天香| 亚洲视频综合在线| 日日摸夜夜添夜夜添亚洲女人| 日本欧美加勒比视频| 国产资源在线一区| 91免费小视频| 欧美一级日韩免费不卡| 国产午夜亚洲精品羞羞网站| 亚洲欧美日韩成人高清在线一区| 亚洲va天堂va国产va久| 狠狠色丁香婷综合久久| 97久久久精品综合88久久| 欧美日本不卡视频| 久久午夜免费电影| 亚洲最大的成人av| 精品在线你懂的| 91麻豆产精品久久久久久| 7777精品伊人久久久大香线蕉| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲色图另类专区| 久久99热99| 色偷偷一区二区三区| 日韩欧美亚洲另类制服综合在线| 国产欧美1区2区3区| 视频一区欧美日韩| 成人动漫在线一区| 欧美一区二区在线看| 国产精品国产成人国产三级| 日韩国产一区二| aaa欧美大片| 欧美变态口味重另类| 亚洲综合偷拍欧美一区色| 精品在线一区二区三区| 在线亚洲+欧美+日本专区| 国产亚洲精品资源在线26u| 亚洲一区二区三区精品在线| 国产精品一区二区果冻传媒| 欧美日韩视频在线第一区| 国产日韩欧美高清| 青青草国产成人av片免费| bt欧美亚洲午夜电影天堂| 日韩亚洲电影在线| 一个色在线综合| thepron国产精品| 久久色在线视频| 日韩激情av在线| 色哦色哦哦色天天综合| 国产亚洲va综合人人澡精品 | 亚洲成人你懂的| 色综合天天综合网天天看片| 久久久青草青青国产亚洲免观| 亚洲成人手机在线| 色婷婷综合五月| 国产精品久久久久久户外露出| 久久99国产精品麻豆| 欧美人成免费网站| 艳妇臀荡乳欲伦亚洲一区| 99r国产精品| 国产精品久久久久久久午夜片| 久久爱www久久做| 日韩美一区二区三区| 亚洲大片在线观看| 欧美亚洲高清一区二区三区不卡| 国产精品全国免费观看高清| 国产又黄又大久久| 精品国产91乱码一区二区三区| 蜜桃精品在线观看| 欧美一区三区四区| 日韩av中文字幕一区二区三区| 欧美男人的天堂一二区| 亚洲一级二级三级在线免费观看| 一本一本大道香蕉久在线精品| 国产精品妹子av| av中文字幕一区| 中文字幕一区二区视频| 91香蕉视频mp4| 亚洲精品免费在线| 欧美日韩国产高清一区| 亚洲成年人影院| 欧美一级精品在线| 久久99精品久久久久久| 26uuu亚洲综合色| 国产91精品一区二区麻豆网站| 欧美极品xxx| 成人aa视频在线观看| 中文字幕日韩欧美一区二区三区| 久久久久久久久久电影| 国产精品一区2区| 国产精品白丝在线| 欧美在线综合视频| 午夜电影网一区| 欧美成人a在线| 国产精品一区三区| 中文字幕国产一区| 欧洲一区二区av| 日本成人中文字幕在线视频| 日韩欧美久久一区| 国产盗摄一区二区| 亚洲精品亚洲人成人网在线播放| 欧美亚洲一区三区| 免费观看一级特黄欧美大片| 久久久五月婷婷| 色香色香欲天天天影视综合网| 天堂成人国产精品一区| 久久久噜噜噜久噜久久综合| 国产成人无遮挡在线视频| 中文字幕在线视频一区| 欧美日韩精品欧美日韩精品一| 久久精品噜噜噜成人88aⅴ| 中文天堂在线一区| 欧美三级乱人伦电影| 精品一区二区三区在线播放| 国产精品毛片高清在线完整版| 在线免费观看一区| 免费在线欧美视频| 国产精品久久久久久久浪潮网站| 在线观看一区二区视频| 黄一区二区三区| 一区二区三区国产豹纹内裤在线| 日韩午夜激情av| 99综合电影在线视频| 日韩成人一级大片| 国产精品久久久久久久久免费丝袜 | 亚洲品质自拍视频| 日韩午夜在线观看| 9i看片成人免费高清| 久久精工是国产品牌吗| 亚洲免费成人av| 国产午夜三级一区二区三| 在线观看日韩高清av| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩在线一区二区| 国产精品国产三级国产三级人妇| 91麻豆精品国产自产在线| 不卡电影一区二区三区| 免费视频一区二区| 夜夜嗨av一区二区三区四季av| 久久久99久久精品欧美| 欧美四级电影网| 91亚洲资源网| 国产成人日日夜夜|