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

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

?? additem.cpp

?? 一個opc服務器
?? CPP
字號:
// AddItem.cpp : implementation file
//

#include "stdafx.h"
#include "mexOPC.h"
#include "AddItem.h"
#include "SetItems.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
LPCWSTR empty1 = {L""};
CONST ULONG NEXT = 100;
CString allitems[100]= {""};
int itemcount;
/////////////////////////////////////////////////////////////////////////////
// CAddItem dialog

CAddItem::CAddItem(OPCClientDoc* parent, IOPCServer* pServer, CWnd* pParent/*=NULL*/)
   : CDialog(CAddItem::IDD, pParent), pDoc( parent )
{
   browse.Attach( pServer );  // Get a Browse interface
   m_vt = VT_EMPTY;
   nameSpaceType = OPC_NS_HIERARCHIAL;
   itemcount =0;
   //{{AFX_DATA_INIT(AddItemDlg)
   m_accessPath = _T("");
   m_itemID = _T("");
   //}}AFX_DATA_INIT
}
HRESULT CAddItem::BrowseHere( HTREEITEM item )
{
   USES_CONVERSION;
   if( !browse.IsOk() )
      return E_FAIL;

   HRESULT hr = S_OK;
   if( item != NULL )
   {
      HTREEITEM parent = m_tree.GetParentItem( item );
      hr = BrowseHere( parent );
      if( SUCCEEDED( hr ) )
      {
         CString node( m_tree.GetItemText( item ) );
         if( node != _T("Root") )
         {
            hr = browse.ChangeBrowsePosition( OPC_BROWSE_DOWN, T2OLE(node.GetBuffer(0)) );
         }
      }
   }
   return hr;
}
void CAddItem::UpdateFlat()
{
USES_CONVERSION;
   if( !browse.IsOk() )
      return;

   CWaitCursor wait;
   // get the tags
   CString  m_filter = "*";
   m_flat.ResetContent();
   IEnumString* pEnumString = NULL;
   HRESULT hr = browse.BrowseOPCItemIDs(OPC_FLAT,
                                      T2OLE(m_filter.GetBuffer(0)),
                                      m_vt,
                                      0,  // no filtering (or OPC_READABLE|OPC_WRITEABLE)
                                      &pEnumString);
   if( SUCCEEDED(hr) )
   {
      LPWSTR pName[NEXT];
      ULONG count = 0;
      do
      {
         hr = pEnumString->Next(NEXT, &pName[0], &count);
         // CString does translation from UNICODE to native type
         // (depends on the way the application is built)
         for( ULONG index=0; index<count; index++ )
         {
            CString name( pName[index] );
            m_flat.AddString( name );
            CoTaskMemFree( pName[index] );
         }
      }
      while( hr == S_OK );
      pEnumString->Release();
   }
   m_flat.SetCurSel( 0 );
}
void CAddItem::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAddItem)
	DDX_Control(pDX, IDC_OPC_TREE, m_tree);
	DDX_Control(pDX, IDC_OPC_TAGS, m_tags);
	DDX_Control(pDX, IDC_OPC_FLAT, m_flat);
	DDX_Text(pDX, IDC_OPC_ITEMNAME, m_itemID);
	DDX_Text(pDX, IDC_ITEM_ACCESSPATH, m_accessPath);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAddItem, CDialog)
	//{{AFX_MSG_MAP(CAddItem)
	ON_LBN_DBLCLK(IDC_OPC_TAGS, OnDblclkOpcTags)
	ON_LBN_DBLCLK(IDC_OPC_FLAT, OnDblclkOpcFlat)
	ON_BN_CLICKED(IDC_ITEM_PRO, OnItemPro)
	ON_BN_CLICKED(IDC_OPC_ADDITEM, OnOpcAdditem)
	ON_BN_CLICKED(IDC_OPC_BOOL, OnOpcBool)
	ON_BN_CLICKED(IDC_OPC_DOUBLE, OnOpcDouble)
	ON_BN_CLICKED(IDC_OPC_LONG, OnOpcLong)
	ON_BN_CLICKED(IDC_OPC_NATIVE, OnOpcNative)
	ON_BN_CLICKED(IDC_OPC_SHORT, OnOpcShort)
	ON_BN_CLICKED(IDC_OPC_STRING, OnOpcString)
	ON_NOTIFY(TVN_SELCHANGED, IDC_OPC_TREE, OnSelchangedOpcTree)
	ON_NOTIFY(TVN_ITEMEXPANDING, IDC_OPC_TREE, OnItemexpandingOpcTree)
	ON_LBN_SELCHANGE(IDC_OPC_TAGS, OnSelchangeOpcTags)
	ON_LBN_SELCHANGE(IDC_OPC_FLAT, OnSelchangeOpcFlat)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAddItem message handlers

void CAddItem::OnDblclkOpcFlat() 
{
	// TODO: Add your control notification handler code here
	OnOpcAdditem();
}

void CAddItem::OnSelchangeOpcFlat() 
{
	// TODO: Add your control notification handler code here
	USES_CONVERSION;
   if( !browse.IsOk() )
      return;

   CWaitCursor wait;
   m_itemID.Empty();
   
   int nSel = m_flat.GetCurSel();
   if ( nSel != LB_ERR )
   {
      m_flat.GetText(nSel,m_itemID);
   }
   else
      return;

   // Ask the server for the itemID
   LPWSTR pName = NULL;
   HRESULT hr = browse.GetItemID( T2OLE(m_itemID.GetBuffer(0)), &pName );
   if( SUCCEEDED(hr) )
   {
      m_itemID = pName;
      CoTaskMemFree( pName );
   }

   UpdateData( FALSE );
}

void CAddItem::OnSelchangeOpcTags() 
{
	// TODO: Add your control notification handler code here
	USES_CONVERSION;
   if( !browse.IsOk() )
      return;

   CWaitCursor wait;
   HTREEITEM item = m_tree.GetSelectedItem( );
   HRESULT hr = BrowseHere( item );    // move browse position here

   m_itemID.Empty();
   int nSel;
   if ((nSel = m_tags.GetCurSel()) != LB_ERR)
   {
      m_tags.GetText(nSel,m_itemID);
   }
   else
      return;

   // Ask the server for the itemID
   LPWSTR pName = NULL;
   hr = browse.GetItemID( T2OLE(m_itemID.GetBuffer(0)), &pName );
   if( SUCCEEDED(hr) )
   {
      m_itemID = pName;
      CoTaskMemFree( pName );
   }

   UpdateData( FALSE );

   // return browse position to root
   hr = S_OK;
   for( int i=0; i<10 && SUCCEEDED(hr); i++ )
      hr = browse.ChangeBrowsePosition( OPC_BROWSE_UP, empty1 );
}

void CAddItem::OnDblclkOpcTags() 
{
	// TODO: Add your control notification handler code here
	OnOpcAdditem();
}

void CAddItem::OnItemexpandingOpcTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	USES_CONVERSION;
   if( !browse.IsOk() )
      return;

   CWaitCursor wait;
   NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
   HTREEITEM start = pNMTreeView->itemNew.hItem;
   DWORD expanded = m_tree.GetItemData( start );
   if( !expanded )
   {
      m_tree.SetItemData( start, 1 );  // mark this item expanded
      // remove existing children
      HTREEITEM hItem = m_tree.GetNextItem (start, TVGN_CHILD);
      while (hItem)
      {
         m_tree.DeleteItem( hItem );
         hItem = m_tree.GetNextItem(start, TVGN_CHILD);
      }
      // browse new children
      HRESULT hr = BrowseHere( start );    // move browse position here
      if( SUCCEEDED(hr) )
      {
         IEnumString* pEnumString = NULL;
         hr = browse.BrowseOPCItemIDs( OPC_BRANCH,
                                       L"*",
                                       VT_EMPTY,
                                       0,  // no filtering (or OPC_READABLE|OPC_WRITEABLE)
                                       &pEnumString);
         if( SUCCEEDED(hr) )
         {
            LPWSTR pName[NEXT];
            ULONG count = 0;
            do
            {
               hr = pEnumString->Next(NEXT, &pName[0], &count);
               // CString does translation from UNICODE to native type
               // (depends on the way the application is built)
               for( ULONG index=0; index<count; index++ )
               {
                   CString name( pName[index] );
                   HTREEITEM item = m_tree.InsertItem( name, start );
                   m_tree.SetItemData( item, 0 );
                   m_tree.InsertItem( _T("Dummy"), item );
                   CoTaskMemFree( pName[index] );
               }
            }
            while( hr == S_OK );
            pEnumString->Release();
         }
      }
      // return browse position to root
      hr = S_OK;
      for( int i=0; i<10 && SUCCEEDED(hr); i++ )
         hr = browse.ChangeBrowsePosition( OPC_BROWSE_UP, empty1 );
   }
   *pResult = 0;
}

void CAddItem::OnSelchangedOpcTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	USES_CONVERSION;
   if( !browse.IsOk() )
      return;
   CString  m_filter="*";
   CWaitCursor wait;
   HTREEITEM item = m_tree.GetSelectedItem( );
   HRESULT hr = BrowseHere( item );    // move browse position here
   if( SUCCEEDED(hr) )
   {
      // get the tags
      m_tags.ResetContent();
      IEnumString* pEnumString = NULL;
      hr = browse.BrowseOPCItemIDs(OPC_LEAF,
                                   T2OLE(m_filter.GetBuffer(0)),
                                   m_vt,
                                   0,  // no filtering (or OPC_READABLE|OPC_WRITEABLE)
                                   &pEnumString);
      if( hr == S_OK )
      {
         LPWSTR pName[NEXT];
         ULONG count = 0;
         do
         {
            hr = pEnumString->Next(NEXT, &pName[0], &count);
            // CString does translation from UNICODE to native type
            // (depends on the way the application is built)
            for( ULONG index=0; index<count; index++ )
            {
               CString name( pName[index] );
               m_tags.AddString( name );
               CoTaskMemFree( pName[index] );
            }
         }
         while( hr == S_OK );
         pEnumString->Release();
      }
   }
   hr = S_OK;
   for( int i=0; i<10 && SUCCEEDED(hr); i++ )
      hr = browse.ChangeBrowsePosition( OPC_BROWSE_UP, empty1 );

   if( pResult )
      *pResult = 0;
}

void CAddItem::OnOpcString() 
{
	// TODO: Add your control notification handler code here
	m_vt = VT_BSTR;
   if( nameSpaceType == OPC_NS_HIERARCHIAL )
      OnSelchangedOpcTree( NULL, NULL );
   else
      UpdateFlat();
}

void CAddItem::OnOpcShort() 
{
	// TODO: Add your control notification handler code here
	 m_vt = VT_I2;
   if( nameSpaceType == OPC_NS_HIERARCHIAL )
      OnSelchangedOpcTree( NULL, NULL );
   else
      UpdateFlat();
}

void CAddItem::OnOpcNative() 
{
	// TODO: Add your control notification handler code here
	m_vt = VT_EMPTY;
   if( nameSpaceType == OPC_NS_HIERARCHIAL )
      OnSelchangedOpcTree( NULL, NULL );
   else
      UpdateFlat();
}

void CAddItem::OnOpcLong() 
{
	// TODO: Add your control notification handler code here
	m_vt = VT_I4;
   if( nameSpaceType == OPC_NS_HIERARCHIAL )
      OnSelchangedOpcTree( NULL, NULL );
   else
      UpdateFlat();
}

void CAddItem::OnOpcDouble() 
{
	// TODO: Add your control notification handler code here
	m_vt = VT_R8;
   if( nameSpaceType == OPC_NS_HIERARCHIAL )
      OnSelchangedOpcTree( NULL, NULL );
   else
      UpdateFlat();
}

void CAddItem::OnOpcBool() 
{
	// TODO: Add your control notification handler code here
	m_vt = VT_EMPTY;
   if( nameSpaceType == OPC_NS_HIERARCHIAL )
      OnSelchangedOpcTree( NULL, NULL );
   else
      UpdateFlat();
}

void CAddItem::OnOpcAdditem() 
{
	// TODO: Add your control notification handler code here
	CWaitCursor wait;
    UpdateData();
	allitems[itemcount] = m_itemID;
	itemcount++;

}

void CAddItem::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}

BOOL CAddItem::OnInitDialog() 
{	
	// TODO: Add extra initialization here
   USES_CONVERSION;
   CWaitCursor wait;
   CDialog::OnInitDialog();

   CheckRadioButton( IDC_OPC_NATIVE, IDC_OPC_STRING, IDC_OPC_NATIVE );

   // Fill the tree with the server's hierarchy
   if( !browse.IsOk() )
   {
      m_tree.ShowWindow( FALSE );
      m_tags.ShowWindow( FALSE );
      m_flat.ShowWindow( TRUE );
      m_flat.AddString( _T("Browsing not supported") );
      return TRUE;
   }

   HRESULT hr = browse.QueryOrganization(&nameSpaceType);
   if( FAILED(hr) )
   {
      browse.Detach();
      return TRUE;
   }

   if( nameSpaceType == OPC_NS_HIERARCHIAL ) // show a tree
   {
      HTREEITEM Root = m_tree.InsertItem( _T("Root") );
      m_tree.SetItemData( Root, 1 );
      IEnumString* pEnumString = NULL;
      hr = browse.BrowseOPCItemIDs(OPC_BRANCH,
                                  L"*",
                                  m_vt,
                                  0,  // no filtering (or OPC_READABLE|OPC_WRITEABLE)
                                  &pEnumString);
      if( SUCCEEDED(hr) )
      {
         LPWSTR pName[NEXT];
         ULONG count = 0;
         do
         {
            hr = pEnumString->Next(NEXT, &pName[0], &count);
            // CString does translation from UNICODE to native type
            // (depends on the way the application is built)
            for( ULONG index=0; index<count; index++ )
            {
                CString name( pName[index] );
                HTREEITEM item = m_tree.InsertItem( name, Root );
                m_tree.SetItemData( item, 0 );
                m_tree.InsertItem( _T("Dummy"), item );
                CoTaskMemFree( pName[index] );
            }
         }
         while( hr == S_OK );
         pEnumString->Release();
      }
      m_tree.SelectItem( Root );
      m_tree.Expand( Root, TVE_EXPAND );
   }
   else  // namespace must be flat, only display in one listbox
   {
      m_tree.ShowWindow( FALSE );
      m_tags.ShowWindow( FALSE );
      m_flat.ShowWindow( TRUE );
      UpdateFlat();
   }
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAddItem::OnItemPro() 
{
	// TODO: Add your control notification handler code here
	CSetItems dlg;
	dlg.Itemcount = itemcount;
	dlg.DoModal();
}

void CAddItem::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnClose();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡一二三区首页| 国产一二精品视频| 欧美日韩高清一区二区| 亚洲自拍都市欧美小说| 欧美日韩国产免费一区二区| 青青草国产精品97视觉盛宴| 日韩精品一区二区在线| 国产丶欧美丶日本不卡视频| 国产精品久久久久久久浪潮网站| 一本色道**综合亚洲精品蜜桃冫| 亚洲综合在线免费观看| 欧美吞精做爰啪啪高潮| 免费精品视频在线| 国产精品国产三级国产有无不卡| 在线亚洲欧美专区二区| 日韩av电影天堂| 日本一区二区三级电影在线观看| 成人黄色片在线观看| 亚洲已满18点击进入久久| 日韩欧美成人午夜| av在线免费不卡| 亚洲成av人片在www色猫咪| 久久影院视频免费| 色婷婷av久久久久久久| 久久国产精品区| 亚洲欧洲精品一区二区精品久久久 | 91香蕉视频黄| 免费看欧美女人艹b| 中文字幕亚洲一区二区va在线| 精品视频999| 丰满岳乱妇一区二区三区| 亚洲成人精品一区| 国产精品网站在线播放| 宅男噜噜噜66一区二区66| zzijzzij亚洲日本少妇熟睡| 美女视频一区二区三区| 成人免费小视频| 日韩欧美一区二区免费| 91美女在线看| 国产寡妇亲子伦一区二区| 日韩和欧美一区二区| 亚洲丝袜美腿综合| 精品国产乱码久久久久久久久| 91丨porny丨国产| 国产一区啦啦啦在线观看| 亚洲福利视频一区| 最好看的中文字幕久久| 久久你懂得1024| 欧美一级在线观看| 色婷婷久久久亚洲一区二区三区| 国产激情精品久久久第一区二区 | 国产日产欧美一区| 欧美一区二区三区日韩| 在线日韩国产精品| 成人av午夜电影| 国产传媒日韩欧美成人| 久久99国产精品成人| 石原莉奈在线亚洲三区| 一区二区欧美在线观看| 亚洲欧美在线高清| 国产精品二三区| 中文字幕精品在线不卡| 久久久久久一级片| 日韩一区二区电影在线| 欧美一区二区视频在线观看2020 | 精品福利一二区| 欧美一级生活片| 欧美剧情电影在线观看完整版免费励志电影| 白白色 亚洲乱淫| av亚洲精华国产精华精华| 成人黄色av电影| 成人在线视频首页| gogo大胆日本视频一区| av电影在线观看不卡| 成人免费毛片app| a美女胸又www黄视频久久| www.一区二区| eeuss影院一区二区三区| 成人黄色小视频在线观看| 91一区二区三区在线播放| 91在线视频网址| 欧美视频在线一区| 欧美老肥妇做.爰bbww视频| 7777精品伊人久久久大香线蕉超级流畅| 在线电影院国产精品| 日韩一二三区不卡| 久久综合九色综合欧美98| 国产欧美日韩精品a在线观看| 国产区在线观看成人精品| 国产精品热久久久久夜色精品三区| 中文字幕成人av| 一区二区三区在线观看视频| 性感美女久久精品| 国产一区三区三区| fc2成人免费人成在线观看播放 | bt7086福利一区国产| 97久久精品人人做人人爽| 欧洲精品在线观看| 91麻豆精品国产91久久久资源速度 | 欧美一级高清片在线观看| 91精品国产乱码久久蜜臀| 26uuu亚洲综合色欧美| 国产精品欧美经典| 亚洲成av人片在线观看无码| 精品一区二区三区免费播放| 99久久国产免费看| 欧美一区二区三区啪啪| 国产欧美精品在线观看| 亚洲午夜在线视频| 精品一二三四区| 99视频一区二区三区| 欧美区一区二区三区| 久久色在线观看| 一区二区三区在线观看欧美| 精品在线播放午夜| 欧美综合欧美视频| 26uuu国产一区二区三区| 亚洲激情男女视频| 国产在线国偷精品免费看| 91论坛在线播放| 欧美电影免费观看高清完整版| 欧美国产禁国产网站cc| 亚洲成av人**亚洲成av**| 国产91在线|亚洲| 欧美日韩一二三区| 国产精品久久777777| 日韩成人精品在线观看| 成人午夜精品一区二区三区| 在线播放中文一区| 亚洲欧洲成人自拍| 久久99国产精品麻豆| 欧美伊人久久大香线蕉综合69 | 91视视频在线观看入口直接观看www| 5566中文字幕一区二区电影| 综合婷婷亚洲小说| 国产一区视频在线看| 91精品国产一区二区三区香蕉 | 666欧美在线视频| 中文字幕一区二区不卡| 国内成人精品2018免费看| 欧美日韩午夜在线视频| 中文字幕一区在线| 国产一区二区三区不卡在线观看 | 91蜜桃网址入口| 国产欧美视频一区二区| 精品一区二区三区免费| 在线不卡中文字幕| 亚洲动漫第一页| 色婷婷精品大视频在线蜜桃视频| 国产精品免费av| 成人性生交大合| 久久影音资源网| 国内一区二区视频| 日韩欧美一级二级三级| 蜜臀a∨国产成人精品| 欧美色图12p| 亚洲一区在线免费观看| 色狠狠一区二区| 亚洲美女在线一区| 91蜜桃视频在线| 亚洲精品美国一| 欧美偷拍一区二区| 亚洲电影第三页| 欧美色精品天天在线观看视频| 亚洲欧美激情插| 欧美午夜在线一二页| 亚洲一区在线视频| 91麻豆精品91久久久久同性| 亚洲国产精品嫩草影院| 欧美日韩五月天| 美女在线视频一区| 欧美电影免费观看高清完整版在线 | 国产激情91久久精品导航 | 综合分类小说区另类春色亚洲小说欧美| 国产一区二区成人久久免费影院| 2021国产精品久久精品| 国产乱色国产精品免费视频| 国产日韩三级在线| 成人午夜激情片| 一区二区三区在线视频观看58| 欧美亚洲一区三区| 亚洲成人免费在线| 91精品国产免费| 国产电影精品久久禁18| 自拍视频在线观看一区二区| 色婷婷av一区| 蜜桃久久久久久久| 中文字幕巨乱亚洲| 欧美色视频在线| 精品一区二区在线视频| 中文字幕制服丝袜一区二区三区 | 亚洲欧洲www| 欧美日韩成人在线| 国产麻豆精品一区二区| 专区另类欧美日韩| 欧美男生操女生| 国产伦精品一区二区三区免费 | 国产日韩综合av| 色综合 综合色| 久久爱www久久做|