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

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

?? connectdlg.cpp

?? 此文件為VC++開發環境下的OPC client trend 源代碼
?? CPP
字號:
/////////////////////////////////////////////////////////////////////////////
//
//  OPC Trend VC++ Client:	ConnectDlg.CPP
//							(Source File)
//
/////////////////////////////////////////////////////////////////////////////
//
//          Author: Raphael Imhof
//    Initial Date: 11/04/98
//       $Workfile: ConnectDlg.cpp $
//       $Revision: 1 $
//           $Date: 7/27/99 5:24p $
//   Target System: Microsoft Windows NT 4.0
//     Environment: Visual C++ 5.0 / OPC DataAccess 1.0 / 2.0
//         Remarks: 
//
/////////////////////////////////////////////////////////////////////////////
//
//     Description: implementation of the CConnectDlg class.
//					Server enum/connect dialog
//					
//
/////////////////////////////////////////////////////////////////////////////
//
//  History of Changes     (Please remove very old comments and blank lines!)
//            $Log: /IDK/OPCServer/clients/VC++/Trend/ConnectDlg.cpp $
// 
// 1     7/27/99 5:24p Imhof
// 
// 1     7/27/99 5:19p Imhof
// 
// 6     1/23/99 10:26a Imhof
// New: CLSID_OPCServerList is imported form opcenum_clsid.c
// (Note: this CLSID differs from the spec; OPC will fix; works foe now)
// - Added error handler for EnumClassesOfCategories()
// 
// 5     1/15/99 7:04p Imhof
// Updated legal notice.
// 
// 4     12/16/98 4:02p Imhof
// Added a release for OPCEnum
// 
// 3     12/15/98 10:30a Imhof
// Modifications for OPC 2.0
// 
// 2     11/06/98 5:53p Imhof
// Added header, comment and made some small code changes.
// 
// 
//  $Nokeywords:$ (To avoid useless search while checking in.)
/////////////////////////////////////////////////////////////////////////////
//  Copyright (C) 1998, Siemens Building Technologies, Inc. Landis Division
//
// SIEMENS BUILDING TECHNOLOGIES, INC. IS PROVIDING THE FOLLOWING
// EXAMPLES OF CODE AS SAMPLE ONLY.
//
// SIEMENS BUILDING TECHNOLOGIES, INC.  MAKES NO REPRESENTATIONS
// OR WARRANTIES OF ANY KIND  WITH RESPECT TO THE VALIDTY OF THE 
// CODES   OR   DESIRED   RESULTS   AND   DISCLAIMS   ALL   SUCH 
// REPRESENTATIONS   AND   WARRANTIES,  INCLUDING  FOR  EXAMPLE, 
// WARRANTIES  OF  MERCHANTABILITY  AND FITNESS FOR A PARTICULAR 
// PURPOSE.    SIEMENS  BUILIDNG  TECHNOLOGIES,  INC.  DOES  NOT 
// REPRESENT  OR  WARRANT  THAT  THE  FOLLOWING CODE SAMPLES ARE 
// ACCURATE, VALID, COMPLETE OR CURRENT.
//
/////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "trend.h"
#include "ConnectDlg.h"
#include <opccomn.h>
#include <opccomn_i.c>
#include <opcenum_clsid.c> //for CLSID_OPCServerList

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

const int MAX_KEYLEN = 256;

/////////////////////////////////////////////////////////////////////////////
// CConnectDlg dialog


CConnectDlg::CConnectDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CConnectDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CConnectDlg)
	m_sOPCServer = _T("");
	m_sOPCServerComputer = _T("");
	m_sSelectedOPCServer = _T("");
	//}}AFX_DATA_INIT

	memset(&m_clsidServer,0,sizeof(m_clsidServer));
}


void CConnectDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CConnectDlg)
	DDX_Control(pDX, IDC_SERVER_LIST, m_lbOPCServerList);
	DDX_Text(pDX, IDC_SERVER, m_sOPCServer);
	DDX_Text(pDX, IDC_SERVER_COMPUTER, m_sOPCServerComputer);
	DDX_LBString(pDX, IDC_SERVER_LIST, m_sSelectedOPCServer);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CConnectDlg, CDialog)
	//{{AFX_MSG_MAP(CConnectDlg)
	ON_LBN_SELCHANGE(IDC_SERVER_LIST, OnSelchangeServerList)
	ON_BN_CLICKED(IDC_FIND_SERVERS, OnFindServers)
	ON_LBN_DBLCLK(IDC_SERVER_LIST, OnDblclkServerList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CConnectDlg message handlers

BOOL CConnectDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	FindOPCServers();

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

/* old OPC 1.0 method
BOOL CConnectDlg::FindOPCServers_FromRegistry(LPCTSTR node)
{
	CWaitCursor wait;

	m_lbOPCServerList.ResetContent();

	// search the registry for OPC entries
	HKEY hk = HKEY_CLASSES_ROOT;
	if(node)
	{
		DWORD dwR = RegConnectRegistry ((LPTSTR)node, HKEY_CLASSES_ROOT, &hk);
		if(dwR != ERROR_SUCCESS)
			return FALSE;
	}

	TCHAR key[MAX_KEYLEN];
	for(int index=0; RegEnumKey(hk, index, key, MAX_KEYLEN) == ERROR_SUCCESS; index++)
	{
		HKEY hProgID;
		TCHAR dummy[MAX_KEYLEN];
		if(RegOpenKey(hk, key, &hProgID )==ERROR_SUCCESS )
		{
			LONG size=MAX_KEYLEN;
			if(RegQueryValue(hProgID, _T("OPC"), dummy, &size) == ERROR_SUCCESS )
			{
				TCHAR desc[MAX_KEYLEN];
				size = MAX_KEYLEN;
				RegQueryValue(hk, key, desc, &size);
				m_lbOPCServerList.AddString(key);
			}
			RegCloseKey(hProgID);
		}
		RegCloseKey(hk);
	}
	if(m_lbOPCServerList.GetCount() > 0)
		m_lbOPCServerList.SetCurSel(0);

   return TRUE;
}
*/

BOOL CConnectDlg::FindOPCServers(LPCTSTR node)
{
	USES_CONVERSION;

	CWaitCursor wait;

	m_lbOPCServerList.ResetContent();

	//1. connect to server list component
	CString					sNode(node);
	CComPtr<IOPCServerList>	pServerList;
	COSERVERINFO			si;
	MULTI_QI				qi;
	HRESULT					hRes;

	si.dwReserved1 = 0;
	if(sNode.IsEmpty())
		si.pwszName = NULL;
	else
		si.pwszName = T2OLE(sNode.GetBuffer(0));
	si.pAuthInfo = NULL;
	si.dwReserved2 = 0;

	qi.pIID = &IID_IOPCServerList;
	qi.pItf = NULL;
	qi.hr = 0;

	hRes = CoCreateInstanceEx(CLSID_OPCServerList, NULL, CLSCTX_ALL, &si, 1, &qi);
	if (FAILED(hRes))
	{
		((CTrendApp*)AfxGetApp())->DisplayText(_T("CoCreateInstanceEx()"), hRes);
		return FALSE;
	}
	if (FAILED(qi.hr))
	{
		((CTrendApp*)AfxGetApp())->DisplayText(_T("Failed to connect to server"), qi.hr);
		return FALSE;
	}
		
	pServerList = (IOPCServerList*) qi.pItf;
	qi.pItf->Release();
	
	//2. enumerate the list
	CComPtr<IEnumGUID>	pEnumGUID;
	
	hRes = pServerList->EnumClassesOfCategories(1, &m_catid, 1, &m_catid, &pEnumGUID);
	if(SUCCEEDED(hRes))
	{
		/*
		how many elemets to retrieve for each Next()
		not configurable in options (we are dealing with only a few servers)
		*/
		const unsigned long ulNext = 100;  
		unsigned long count = 0;
		CLSID clsid[ulNext];

		do
		{
			hRes = pEnumGUID->Next(ulNext, clsid, &count);
			for(unsigned long index = 0; index < count; index++)
			{
				LPOLESTR pszProgID;
				LPOLESTR pszUserType;
				if(SUCCEEDED(pServerList->GetClassDetails(clsid[index], &pszProgID, &pszUserType)))
				{				   
					CString sOPCServer;
					sOPCServer.Format( _T("%s  (%s)"), OLE2A(pszProgID), OLE2A(pszUserType));
					int iPos = m_lbOPCServerList.AddString(sOPCServer);
				
					CLSID* pData = new CLSID;
					*pData = clsid[index];
					m_lbOPCServerList.SetItemDataPtr(iPos, pData);

					CoTaskMemFree(pszProgID);
					CoTaskMemFree(pszUserType);
				}
			}
		}
		while(hRes == S_OK);

		pEnumGUID.Release();
	}
	else
	{
		((CTrendApp*)AfxGetApp())->DisplayText(_T("EnumClassesOfCategories()"), hRes);
	}

	//3. disconnect
	pServerList.Release();

	if(m_lbOPCServerList.GetCount() > 0)
		m_lbOPCServerList.SetCurSel(0);

	return TRUE;
}

void CConnectDlg::OnSelchangeServerList() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	m_sOPCServer = m_sSelectedOPCServer;
	m_clsidServer = *(CLSID*) m_lbOPCServerList.GetItemDataPtr(m_lbOPCServerList.GetCurSel());

	UpdateData(FALSE);
}

void CConnectDlg::OnFindServers() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);

	m_lbOPCServerList.ResetContent();

	FindOPCServers(m_sOPCServerComputer);	
}


void CConnectDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(TRUE);

	if(m_sOPCServer.IsEmpty())
	{
		AfxMessageBox(IDS_CONNECT_OPC_SERVER_EMPTY);
		return;
	}

	CDialog::OnOK();
}

void CConnectDlg::OnDblclkServerList() 
{
	// TODO: Add your control notification handler code here
	OnOK();
}

BOOL CConnectDlg::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	CLSID*	pData = NULL;
	UINT	count = m_lbOPCServerList.GetCount();

	for(UINT i = 0; i < count; i++)
	{
		pData = (CLSID*) m_lbOPCServerList.GetItemDataPtr(i);
		delete pData;
	}
	
	return CDialog::DestroyWindow();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色狠狠色综合| 欧美日韩一区二区在线观看| 色婷婷综合五月| 欧美不卡一二三| 亚洲中国最大av网站| 国产成人在线网站| 欧美一区二区三区色| 一色屋精品亚洲香蕉网站| 精品一区二区三区在线播放| 在线影院国内精品| 国产精品福利一区| 成人精品gif动图一区| 欧美日韩视频第一区| 中文字幕日本乱码精品影院| 国产又黄又大久久| 精品久久国产老人久久综合| 日韩综合小视频| 欧美艳星brazzers| 一区二区三区四区在线| 成人黄色免费短视频| 国产亚洲欧美激情| 九九九精品视频| 日韩欧美一级二级三级久久久| 欧美日韩一级片网站| 一区二区日韩av| 91在线精品一区二区| 国产精品你懂的在线| 国产丶欧美丶日本不卡视频| 久久综合九色综合欧美98| 看国产成人h片视频| 精品日本一线二线三线不卡| 青青草国产精品97视觉盛宴| 日韩精品一区二区三区视频播放| 日韩国产欧美在线播放| 欧美高清一级片在线| 日韩国产在线观看| 精品国产三级a在线观看| 精品无人码麻豆乱码1区2区| 精品国精品国产| 国产成人福利片| 亚洲三级小视频| 欧美日韩在线播放| 全部av―极品视觉盛宴亚洲| 日韩欧美一区二区免费| 精品一区二区三区久久| 国产亚洲一区二区三区四区| 高清不卡一区二区| 亚洲女人****多毛耸耸8| 欧美三级在线看| 久久精品国产成人一区二区三区| 日韩欧美中文一区| 国产成人久久精品77777最新版本| 久久天天做天天爱综合色| 国产精品911| 一个色综合av| 日韩免费高清视频| 丁香婷婷综合激情五月色| 亚洲日本丝袜连裤袜办公室| 欧美日韩免费电影| 激情六月婷婷综合| 亚洲人被黑人高潮完整版| 欧美日韩亚洲综合在线| 麻豆一区二区三| 中文字幕亚洲一区二区va在线| 欧美色区777第一页| 精品一区二区三区的国产在线播放| 久久精品日产第一区二区三区高清版 | 欧美一区二区三区男人的天堂| 日韩国产在线一| 欧美国产综合色视频| 欧美熟乱第一页| 国产精品亚洲一区二区三区在线| 一区二区三区在线视频观看58| 日韩欧美一卡二卡| 色综合久久综合| 国内精品伊人久久久久av影院| 天堂午夜影视日韩欧美一区二区| 91麻豆精品国产91| 99re成人精品视频| 精品一区二区久久久| 亚洲女女做受ⅹxx高潮| 久久久久久久久久看片| 欧美日韩情趣电影| 99国产麻豆精品| 国产一区二区三区最好精华液| 一区二区三区国产精华| 久久久激情视频| 日韩欧美一区二区不卡| 在线观看三级视频欧美| 国产精品亚洲专一区二区三区| 丝袜美腿高跟呻吟高潮一区| 亚洲欧美日韩系列| 久久久高清一区二区三区| 91精品欧美综合在线观看最新| 99久久免费视频.com| 国产乱一区二区| 久久精品国产精品亚洲综合| 亚洲国产精品久久久久婷婷884| 国产精品亲子乱子伦xxxx裸| 精品成a人在线观看| 日韩免费看的电影| 欧美精品丝袜中出| 欧美日韩视频一区二区| 色综合天天综合网国产成人综合天 | 久久精品99国产精品日本| 亚洲高清一区二区三区| 一区二区三区91| 亚洲免费观看高清在线观看| 亚洲欧洲精品一区二区三区| 亚洲国产精品精华液2区45| 欧美精品一区二区三区一线天视频 | 91福利国产成人精品照片| 成人动漫av在线| 不卡的av中国片| youjizz久久| 波波电影院一区二区三区| 成人av在线资源| 99国产精品久久久| 日本久久精品电影| 欧美在线免费播放| 欧美日韩国产电影| 日韩欧美一二三区| 精品国产乱码久久久久久免费| 26uuu成人网一区二区三区| 精品国产污网站| 国产精品免费久久久久| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 秋霞午夜av一区二区三区| 蜜桃视频在线一区| 国产精品1024| 91丨九色丨蝌蚪丨老版| 色婷婷国产精品| 欧美日韩国产综合一区二区三区| 欧美日韩大陆在线| 精品福利一区二区三区免费视频| 久久精品一区二区三区av| 国产精品欧美一区喷水| 亚洲综合色成人| 粉嫩av一区二区三区| 99re6这里只有精品视频在线观看| 在线观看国产日韩| 日韩欧美久久久| 国产精品国产三级国产有无不卡| 一区二区三区在线观看动漫 | 亚洲欧美另类久久久精品2019| 亚洲亚洲人成综合网络| 奇米色一区二区| 国产不卡视频一区二区三区| 色欧美片视频在线观看在线视频| 欧美日韩情趣电影| 久久精品亚洲乱码伦伦中文| 一卡二卡欧美日韩| 久久福利资源站| 91蝌蚪porny成人天涯| 欧美一区二区三区视频在线 | 国产网红主播福利一区二区| 亚洲天堂成人网| 另类小说图片综合网| 91美女片黄在线| 久久久久88色偷偷免费| 亚洲午夜久久久久久久久电影网| 国产一区二区三区最好精华液| 欧美在线不卡一区| 久久久久久一级片| 亚洲va欧美va天堂v国产综合| 国产成人av电影在线| 欧美日韩另类国产亚洲欧美一级| 久久女同精品一区二区| 五月婷婷综合在线| 91网页版在线| 国产清纯美女被跳蛋高潮一区二区久久w| 一区二区三区四区在线免费观看 | 国产91精品久久久久久久网曝门 | 国产一区二三区| 51精品秘密在线观看| 亚洲色图清纯唯美| 国产91精品欧美| wwwwxxxxx欧美| 毛片av一区二区三区| 欧美老肥妇做.爰bbww| 亚洲欧美日韩小说| 91小宝寻花一区二区三区| 欧美国产一区二区| 国产一区不卡视频| 欧美xfplay| 日韩二区三区四区| 欧美日韩的一区二区| 亚洲一区二区三区中文字幕在线 | 99久久99久久综合| 久久精品一区二区三区不卡牛牛 | 91黄色在线观看| 亚洲欧洲成人自拍| av激情亚洲男人天堂| 欧美激情一区不卡| 粉嫩绯色av一区二区在线观看| 国产拍欧美日韩视频二区| 国产精品一区二区果冻传媒| 久久理论电影网| 91香蕉视频在线| 亚洲欧美另类在线|