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

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

?? dlggetpath.cpp

?? the same function with explore of SHBrowseForFolder example
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	CString sRet;
	do
	{
		//End with a share name.
		NETRESOURCE *const pNetResource = (NETRESOURCE *)(m_Tree.GetItemData( hItem ) );
		if( pNetResource )
		{
			sRet = CString(pNetResource->lpRemoteName) + _T('\\')+ sRet; 		
			break;
		}
		//Add the directory name to the path.
		sRet = m_Tree.GetItemText( hItem ) + _T('\\')+ sRet; 
		hItem = m_Tree.GetParentItem( hItem );
	} while( hItem );
	return sRet;
}



/////////////////////////////////////////////////////////////////////////////
//FUNCTION
//	Node on the tree is about to expand
//	Called when some user tries to expand the tree.
//CREATED
//	8-5-1999  19:56:55
//PARAMS
//	See help.
void CDlgGetPath::OnItemexpandingTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	TRACE( _T("CDlgGetPath::OnItemexpandingTree(%p)\n"), pNMHDR );
	CWaitCursor CursorWaiting;						//Show the wait cursor while expanding
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	ASSERT( pNMTreeView );
	ASSERT( pResult );
	//Only action 2 notifications
	if( pNMTreeView->action == 2 )
	{
		//Update location display
		CString sPath = GetItemPath( pNMTreeView->itemNew.hItem );
		//Refresh children
		if( !m_Tree.GetChildItem( pNMTreeView->itemNew.hItem ) )
		{
			PopulateTree( sPath, pNMTreeView->itemNew.hItem );
			if( m_Tree.GetSelectedItem( ) != pNMTreeView->itemNew.hItem )
				m_Tree.SelectItem( pNMTreeView->itemNew.hItem );
		}
	}
	*pResult = 0;
}


/////////////////////////////////////////////////////////////////////////////
//FUNCTION
//	Update the Edit dox with the new selection path
//CREATED
//	9-5-1999  12:54:48
//PARAMS
//	Seel help	
void CDlgGetPath::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	TRACE( _T("CDlgGetPath::OnSelchangedTree(%p)\n"), pNMHDR );
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	ASSERT( pNMTreeView );
	ASSERT( pResult );
	CString sPath;									//Currently selected path or empty if not valid
	//Disable search on Workstation roots
	if( m_Tree.GetItemData( pNMTreeView->itemNew.hItem ) || 
			pNMTreeView->itemNew.hItem == m_hNetworkRoot )
	{
		GetDlgItem( IDOK )->EnableWindow( false );
	}
	else
	{
		GetDlgItem( IDOK )->EnableWindow( true );
		sPath = GetItemPath( pNMTreeView->itemNew.hItem );
	}
	*pResult = 0;
	
	//
	//TODO add code here to process users selection
	//
	ASSERT( GetDlgItem( IDC_STATIC_NOTE ) );
	SetDlgItemText( IDC_STATIC_NOTE, sPath );

}

					
/////////////////////////////////////////////////////////////////////////////
//FUNCTION
//	Created a duplicate of the given string. (There must be a function for this)
//CREATED
//	23-5-1999  15:55:53
//PARAMS
//	String to be duplicated
//RETURNS
//	Pointer to the duplicated string
TCHAR* MakeObjectDynamic( LPTSTR szData )
{
	TRACE( _T("MakeObjectDynamic( %s )\n"), szData );
	//Assume a NULL = empty string
	TCHAR * szRet = NULL;
	int nLength	  = 0;
	if( szData )
		nLength = _tcslen( szData )+1;
	if( nLength > 0 )
	{
		szRet = new TCHAR[nLength];
		ASSERT( szRet );
		_tcscpy( szRet, szData );
	}
	return szRet;
}


/////////////////////////////////////////////////////////////////////////////
//FUNCTION
//	To display the same was window explorer
//	..names all uppercase letters are converted
//	..to inital caps.
//CREATED
//	23-5-1999  16:10:34
//PARAMS
//	sName		sName to convert.
//RETURNS
//	Converted name
CString WindowName( CString sName )
{
	CString sRet;
	//Scan all charactors to determine if their are any lower case items
	for( int n = 0; n < sName.GetLength(); n++ )
	{
		TCHAR ch = sName[n];
		if ((ch >= 'a') && (ch <= 'z') )
			return sName;
	}
	sName.MakeLower();
	if( sName.GetLength() > 0 )
	{
		CString sFirstChar = sName[0];
		sFirstChar.MakeUpper();
		sName = sFirstChar + sName.Mid( 1 );
	}
	return sName;
}

///////////////////////////////////////////////////////////////////////////////
//DESCRIPTION:
//	Enumerate the given network resource. This is where the magic happens.
//CREATED:
//	10-5-1999  15:19:02
//PARAMS:
//	hParent	Item to create the child items from
//			..(item.lParam) == NULL if finding the NETWORK root.
//RETURN:
//	ture if one or more items were found
bool CDlgGetPath::EnumNetwork( HTREEITEM hParent )
{
	TRACE( _T("CDlgGetPath::EnumNetwork( %p )\n"), hParent );
	bool bGotChildren = false;						//True if a child is added.	

	//Check if the item already has a network resource and use it.
	NETRESOURCE *const pNetResource = (NETRESOURCE *)(m_Tree.GetItemData( hParent ) );
	//
	//Setup
	//
	DWORD dwResult;      
	HANDLE hEnum;      
	DWORD cbBuffer = 16384;
	DWORD cEntries = 0xFFFFFFFF;      
	LPNETRESOURCE lpnrDrv;      
	DWORD i;
	dwResult = WNetOpenEnum(	pNetResource ?  RESOURCE_GLOBALNET  : RESOURCE_CONTEXT,
								RESOURCETYPE_ANY,//RESOURCETYPE_DISK,
								0,                               
								pNetResource ? 	pNetResource		: NULL,
								&hEnum );      
	//Was the read sucessfull
	if (dwResult != NO_ERROR)      
	{
		TRACE( _T("*** ERROR %d - Cannot enumerate network drives.\n"), dwResult );
		return false;
	} 
	
	//
	//Get items until no more remain.
	//
	do      
	{
		lpnrDrv = (LPNETRESOURCE) GlobalAlloc( GPTR, cbBuffer );
		dwResult = WNetEnumResource( hEnum, &cEntries, lpnrDrv, &cbBuffer   );
		if (dwResult == NO_ERROR)         
		{
			//Scann through the results
			for( i = 0; i < cEntries; i++ )            
			{
				CString sNameRemote = lpnrDrv[i].lpRemoteName;
				int nType = 9;
				if( sNameRemote.IsEmpty() )
				{
					sNameRemote = lpnrDrv[i].lpComment;
					nType = 8;
				}
				//
				//Remove leading back slashes 
				//
				if( sNameRemote.GetLength() > 0 && sNameRemote[0] == _T('\\') )
					sNameRemote = sNameRemote.Mid( 1 );
				if( sNameRemote.GetLength() > 0 && sNameRemote[0] == _T('\\') )
					sNameRemote = sNameRemote.Mid( 1 );

				//
				//Display a share or the appropiate icon
				//
				if( lpnrDrv[i].dwDisplayType == RESOURCEDISPLAYTYPE_SHARE )
				{
					//Display only the share name
					int nPos = sNameRemote.Find( _T('\\') );
					if( nPos >= 0 )
						sNameRemote = sNameRemote.Mid( nPos+1 );
					InsertItem( hParent, NULL, sNameRemote, DRIVE_NO_ROOT_DIR, DRIVE_UNKNOWN );
				}
				else
				{
					NETRESOURCE* pResource = new NETRESOURCE;
					ASSERT( pResource );
					*pResource = lpnrDrv[i];
					pResource->lpLocalName	= MakeObjectDynamic( pResource->lpLocalName );
					pResource->lpRemoteName = MakeObjectDynamic( pResource->lpRemoteName );
					pResource->lpComment	= MakeObjectDynamic( pResource->lpComment );
					pResource->lpProvider	= MakeObjectDynamic( pResource->lpProvider );
					InsertItem( hParent, pResource, sNameRemote, pResource->dwDisplayType+7 );
				}
				bGotChildren = true;
			}
		}         
		GlobalFree( (HGLOBAL) lpnrDrv );      
		if( dwResult != ERROR_NO_MORE_ITEMS )
		{            
			TRACE( _T("*** ERROR %d - Cannot complete network drive enumeration\n"), dwResult );
			break;         
		}
	}
	while( dwResult != ERROR_NO_MORE_ITEMS );      

	//
	//Let go and go home
	//
	WNetCloseEnum(hEnum);   
	return bGotChildren;
}


/////////////////////////////////////////////////////////////////////////////
//FUNCTION
//	Release the dynamically created items in the list.
//CREATED
//	22-5-1999  16:59:56
//RETURNS
//	See help
BOOL CDlgGetPath::DestroyWindow() 
{
	TRACE( _T("CDlgGetPath::DestroyWindow()\n") );
	//Get the current selection before heading home
	m_sPath = GetItemPath( m_Tree.GetSelectedItem( ) );

	//Start at the root deleting.
	HTREEITEM hItemCur = m_Tree.GetRootItem( );		//Current item under inspection

	//
	//While their is still data in the tree
	//
	while( hItemCur )
	{
		HTREEITEM hItem = m_Tree.GetChildItem( hItemCur );
		//Has children then make the child current
		if( hItem )
		{
			hItemCur = hItem;
			continue;
		}

		//Item has not children so we shall destroy it.
		//but first we must decide who is to take its place.
		HTREEITEM hNextSibItem = m_Tree.GetNextSiblingItem( hItemCur );
		HTREEITEM hPrevSibItem = m_Tree.GetPrevSiblingItem( hItemCur );
		HTREEITEM hParentItem  = m_Tree.GetParentItem( hItemCur );
		//Get item data to check if lparam is to be destroyed
		NETRESOURCE *const pNetResource = (NETRESOURCE *)m_Tree.GetItemData( hItemCur );//(item.lParam);
		if( pNetResource )
		{
			delete [] (pNetResource->lpLocalName);
			delete [] (pNetResource->lpRemoteName);
			delete [] (pNetResource->lpComment);
			delete [] (pNetResource->lpProvider);
			delete pNetResource;
		}
		m_Tree.DeleteItem( hItemCur );
		hItemCur = NULL;
		//Determine which item is next to recieve the focus
		if( hParentItem )
			hItemCur = hParentItem;
		if( hPrevSibItem )
			hItemCur = hPrevSibItem;
		if( hNextSibItem )
			hItemCur = hNextSibItem;
	}	
	//All items removed from list now. Lets trash this place and go home.
	return CDialog::DestroyWindow();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区免费视频| 欧美性感一类影片在线播放| 972aa.com艺术欧美| 欧美一区二区三区的| 日韩理论片中文av| 国产资源精品在线观看| 欧美日本乱大交xxxxx| 国产精品毛片久久久久久久| 日本不卡1234视频| 欧美日韩国产综合一区二区三区| 亚洲国产精品二十页| 日产国产高清一区二区三区| 91麻豆精品一区二区三区| 久久久蜜臀国产一区二区| 日本欧美在线看| 欧美日韩精品三区| 亚洲一区二区欧美| 97se亚洲国产综合自在线不卡 | 欧美亚洲综合另类| 国产精品成人在线观看| 国产裸体歌舞团一区二区| 91精品国产91久久综合桃花| 亚洲大尺度视频在线观看| 色诱亚洲精品久久久久久| 国产欧美日韩精品在线| 国产成人亚洲综合a∨婷婷 | 蜜臀av一区二区三区| 欧美在线观看视频在线| 亚洲一区精品在线| 欧美日韩一区久久| 午夜欧美大尺度福利影院在线看| 欧洲精品在线观看| 亚洲国产综合91精品麻豆| 欧美日韩aaaaaa| 性久久久久久久久久久久| 精品1区2区3区| 免费看欧美女人艹b| 精品欧美一区二区三区精品久久| 蜜臀精品久久久久久蜜臀| 精品国免费一区二区三区| 国产伦精品一区二区三区免费| 久久亚洲一区二区三区四区| 国产精品一区二区免费不卡 | 亚洲激情图片小说视频| 色视频成人在线观看免| 亚洲一区二区视频| 欧美一级片在线看| 国产一区二区三区久久悠悠色av| 国产欧美综合在线观看第十页| av资源站一区| 午夜久久久久久电影| 欧美电影免费观看高清完整版在线观看| 裸体在线国模精品偷拍| 久久精品男人的天堂| 99久久免费精品| 天堂资源在线中文精品| 久久人人爽人人爽| 91亚洲永久精品| 日韩中文字幕不卡| 国产精品久久久久久久久免费相片 | 99久久综合国产精品| 一区二区三区免费观看| 日韩欧美国产系列| 99久久精品免费精品国产| 视频一区二区中文字幕| 国产精品欧美久久久久一区二区| 在线观看亚洲专区| 国产露脸91国语对白| 亚洲激情在线激情| 久久久精品日韩欧美| 色哦色哦哦色天天综合| 精品在线免费视频| 亚洲国产精品一区二区www在线| 久久久另类综合| 欧美日韩精品一二三区| 99久久婷婷国产精品综合| 久久黄色级2电影| 一区二区成人在线| 国产精品免费视频观看| 欧美mv和日韩mv的网站| 欧美视频自拍偷拍| 成人av网站免费观看| 奇米精品一区二区三区四区 | 国产欧美日韩综合精品一区二区| 欧美日韩国产精选| 97久久精品人人澡人人爽| 蜜臀久久99精品久久久久久9| 亚洲丝袜精品丝袜在线| 国产欧美一区二区精品性| 日韩三级高清在线| 欧美日韩一区不卡| 色综合天天综合色综合av| 国产成人免费在线视频| 久久99久久99精品免视看婷婷 | 日韩理论片一区二区| 国产午夜精品理论片a级大结局| 欧美一级欧美一级在线播放| 欧美综合色免费| 91亚洲精品一区二区乱码| 国产成人免费视频| 国产精品66部| 国产精品一区在线| 国产精品一区在线| 国产精品亚洲成人| 丁香一区二区三区| 国产成人在线视频免费播放| 国产麻豆视频一区二区| 黄页网站大全一区二区| 蜜桃av噜噜一区| 久久国内精品视频| 韩国欧美国产一区| 国产一区二区福利视频| 国产在线一区二区| 国产精品亚洲人在线观看| 国产精品一卡二| 丁香五精品蜜臀久久久久99网站| 国产激情一区二区三区| 懂色一区二区三区免费观看| 风间由美一区二区三区在线观看 | 国产一区999| 国产成人av电影在线| 国产成人午夜电影网| 本田岬高潮一区二区三区| 91久久精品日日躁夜夜躁欧美| 色老汉一区二区三区| 欧美日韩国产综合视频在线观看| 91精品国产一区二区三区| 日韩一卡二卡三卡| 国产亚洲欧洲997久久综合 | 91亚洲永久精品| 欧美综合在线视频| 日韩欧美精品在线视频| 国产欧美日韩麻豆91| 亚洲精品国产一区二区三区四区在线 | 精品成人a区在线观看| 久久精品水蜜桃av综合天堂| 中文av一区特黄| 亚洲精品成a人| 免费三级欧美电影| 成人黄页毛片网站| 欧美日韩免费一区二区三区| 欧美xxxx老人做受| 国产精品乱码一区二三区小蝌蚪| 亚洲免费观看高清完整版在线观看熊 | 91麻豆精品国产91久久久更新时间 | 久久久影视传媒| 一卡二卡欧美日韩| 国产伦精品一区二区三区免费 | 成人在线视频一区二区| 欧美亚洲自拍偷拍| 国产网红主播福利一区二区| 一区二区三区在线观看视频| 看国产成人h片视频| 91在线播放网址| 欧美精品一区二区三| 亚洲乱码国产乱码精品精98午夜 | 中文字幕成人网| 青青国产91久久久久久| 99久久精品免费看国产 | 亚洲影院免费观看| 国产一区二区三区在线观看免费 | 99re这里只有精品6| 欧美mv日韩mv亚洲| 亚洲综合偷拍欧美一区色| 国产一区二区不卡在线 | 日韩码欧中文字| 韩日精品视频一区| 欧美日韩黄视频| 亚洲美女电影在线| 波波电影院一区二区三区| 欧美一区二区三区思思人| 亚洲特黄一级片| 成人三级伦理片| 精品999在线播放| 蜜臀a∨国产成人精品| 欧美性大战久久| 亚洲欧美偷拍三级| 成人午夜激情片| 久久久久久一二三区| 日本不卡免费在线视频| 欧美日韩国产中文| 洋洋成人永久网站入口| 一本一道波多野结衣一区二区| 欧美国产精品专区| 国产精品中文字幕日韩精品| 日韩一级二级三级| 水蜜桃久久夜色精品一区的特点| 在线一区二区三区四区| 自拍偷拍国产亚洲| www.亚洲国产| 自拍视频在线观看一区二区| 成人avav在线| 中文字幕人成不卡一区| 97久久超碰精品国产| 亚洲视频一区在线| 91同城在线观看| 亚洲日本乱码在线观看| 在线观看一区二区视频| 亚洲一区二三区| 欧美一区二区三区免费视频|