www.gusucode.com > 极速FTP客户端程序(VC++版)-源码程序 > 极速FTP客户端程序(VC++版)-源码程序\code\HistroyCombo.cpp

    //Download by http://www.NewXing.com
// HistroyCombo.cpp : implementation file
//
/*********************************************
**该文件是属于WolfFTP工程中的。如果有什么问题
**请联系
**         tablejiang@21cn.com
**或者访问
**         http://wolfftp.51.net
**以得到最新的支持。
*********************************************/
#include "stdafx.h"
#include "HistroyCombo.h"

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

/////////////////////////////////////////////////////////////////////////////
// CHistroyCombo

CHistroyCombo::CHistroyCombo()
{
}

CHistroyCombo::~CHistroyCombo()
{
	m_ImageList.Detach();
	m_ImageList.m_hImageList = NULL ;
}


BEGIN_MESSAGE_MAP(CHistroyCombo, CComboBoxEx)
	//{{AFX_MSG_MAP(CHistroyCombo)
	ON_CONTROL_REFLECT(CBN_CLOSEUP, OnCloseup)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHistroyCombo message handlers
/****************************************************
**	@Description
**		Get system image list.
**		
**	@Parameter
**		
**		
**	@Return:
**	@Author:	JHM
**	e-mail:		tablejiang@21cn.com
**	@Date:		2001 3 26
****************************************************/
BOOL CHistroyCombo::GetSysImgList()
{
	SHFILEINFO shFinfo;
	HIMAGELIST hImgList = NULL;

	if ( GetImageList( ) )
		m_ImageList.Detach();

	hImgList = (HIMAGELIST)SHGetFileInfo( "C:\\",
							  0,
							  &shFinfo,
							  sizeof( shFinfo ),
							  SHGFI_SYSICONINDEX | 
							  SHGFI_SMALLICON );
	if ( !hImgList )
	{
		return FALSE;
	}

	m_ImageList.m_hImageList = hImgList ;
	
	SetImageList( &m_ImageList ) ;

	return TRUE;   // OK
}
/****************************************************
**	@Description
**		
**		
**	@Parameter
**		
**		
**	@Return:
**	@Author:	JHM
**	e-mail:		tablejiang@21cn.com
**	@Date:		2001 3 26
****************************************************/

void CHistroyCombo::OnCloseup() 
{
	// TODO: Add your control notification handler code here
	
}
/****************************************************
**	@Description
**		add a history path to this combox
**		
**	@Parameter
**		
**		
**	@Return:
**	@Author:	JHM
**	e-mail:		tablejiang@21cn.com
**	@Date:		2001 3 26
****************************************************/
BOOL CHistroyCombo::AddString(LPCTSTR strPath)
{

	COMBOBOXEXITEM		cbi;
	CString				DisplayString = strPath ;

	cbi.mask = CBEIF_TEXT;
	
	cbi.iItem = 0 ;
	cbi.pszText = (LPTSTR)(LPCTSTR)DisplayString ;
	cbi.cchTextMax = DisplayString.GetLength() ;
	//cbi.iImage = iIcon ;
	//cbi.iSelectedImage = iSelIcon ;
	//cbi.iOverlay = 0 ;

	InsertItem( &cbi ) ;
	
	return true ;	
}
/****************************************************
**	@Description
**		select specify path .
**		
**	@Parameter
**		
**		
**	@Return:
**	@Author:	JHM
**	e-mail:		tablejiang@21cn.com
**	@Date:		2001 3 26
****************************************************/
BOOL CHistroyCombo::SetItemSelect(LPCTSTR strItem)
{
	CString strFind = strItem ;
	COMBOBOXEXITEM		cbi;
	int iCount = GetCount( ) ;
	int i ;
	char findBuffer[MAX_PATH] ;

	if( strFind.GetLength() != 1 && ( strFind.Right( 1 ) == '\\' || strFind.Right( 1 ) == '/' ) )
	{
		strFind.SetAt( strFind.GetLength() - 1 , '\0' ) ;
	}
	//find the path string .
	for( i = 0 ; i < iCount ; i ++ )
	{
		cbi.mask = CBEIF_TEXT ;
		cbi.iItem = i ;
		cbi.pszText = findBuffer ;
		cbi.cchTextMax = MAX_PATH ;
		GetItem( &cbi ) ;
		if( strcmp( cbi.pszText , strFind ) == 0 )
		{
			SetCurSel( i ) ;
			return true ;
		}
	}
	return false ;
}
/****************************************************
**	@Description
**		get selected text .
**		
**	@Parameter
**		
**		
**	@Return:
**	@Author:	JHM
**	e-mail:		tablejiang@21cn.com
**	@Date:		2001 3 26
****************************************************/
BOOL CHistroyCombo::GetSelectText(char *szBuffer)
{
	int iCurSel = GetCurSel( ) ;
	if( iCurSel == CB_ERR )
		return false ;

	int iRet = GetLBText( iCurSel , szBuffer ) ;
	if( iRet == CB_ERR )
		return false ;
	return true ;
}
/****************************************************
**	@Description
**		delete all item .
**		
**	@Parameter
**		
**		
**	@Return:
**	@Author:	JHM
**	e-mail:		tablejiang@21cn.com
**	@Date:		2001 3 26
****************************************************/
BOOL CHistroyCombo::DeleteAllItem()
{
	int iCount = GetCount( ) ;
	if( iCount == CB_ERR )
		return false ;
	for( int i = 0 ; i < iCount ; i ++ )
	{
		DeleteString( 0 ) ;
	}
	return true ;
}