当前位置: 首页>>代码示例>>C++>>正文


C++ CAtlMap::GetNextAssoc方法代码示例

本文整理汇总了C++中CAtlMap::GetNextAssoc方法的典型用法代码示例。如果您正苦于以下问题:C++ CAtlMap::GetNextAssoc方法的具体用法?C++ CAtlMap::GetNextAssoc怎么用?C++ CAtlMap::GetNextAssoc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CAtlMap的用法示例。


在下文中一共展示了CAtlMap::GetNextAssoc方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: PathFindExtension

STDMETHODIMP CPreviewPlugin::Preview2(/* [in] */ BSTR sSource, /* [in] */ BSTR sTarget)
{
	m_bCancel = false;

	if ( ! sSource || ! sTarget )
		return E_POINTER;

	if ( ! m_pSite )
		return E_UNEXPECTED;

	// Get extension
	LPCTSTR szTargetExt = PathFindExtension( sTarget );
	if ( ! *szTargetExt )
		return E_INVALIDARG;

	// Load data
	CAtlMap< CString, CString > oData;
	LoadData( oData );

	// Find command line for extension
	for ( POSITION pos = oData.GetStartPosition(); pos; )
	{
		CString sExt, sCommand;
		oData.GetNextAssoc( pos, sExt, sCommand );

		TCHAR szKey[ MAX_PATH ] = { _T(".") };
		for ( LPCTSTR str = sExt.GetBuffer(); ; ++str )
		{
			LPTSTR space = StrChr( str, _T(' ') );
			if ( space )
				*space = _T('\0');
			lstrcpyn( szKey + 1, str, _countof( szKey ) - 1 );
			StrTrim( szKey + 1, _T(". /t") );

			if ( lstrcmpi( szKey, szTargetExt ) == 0 )
			{
				// Found!
				sExt.ReleaseBuffer();

				if ( sCommand.Replace( _T("%1"), sSource ) == 0 ||
					 sCommand.Replace( _T("%2"), sTarget ) == 0 )
					 // Invalid command line
					 return E_INVALIDARG;

				m_pSite->SetProgressMessage( CComBSTR( sCommand ) );
				m_pSite->SetProgressRange( 100 );

				if ( ! Execute( sCommand ) )
					// Can't launch external program
					return E_FAIL;

				m_pSite->SetProgressPosition( 100 );

				// Check for resulting file
				if ( GetFileAttributes( sTarget ) == INVALID_FILE_ATTRIBUTES )
					// No file (user canceled it)
					return S_FALSE;

				// Run it
				m_pSite->QueueDeleteFile( sTarget );
				if ( ! m_bCancel )
					m_pSite->ExecuteFile( sTarget );

				return S_OK;
			}

			if ( ! space )
			{
				sExt.ReleaseBuffer();
				break;
			}
			str = space;
		}
	}

	return E_INVALIDARG;
}
开发者ID:ivan386,项目名称:Shareaza,代码行数:77,代码来源:PreviewPlugin.cpp


注:本文中的CAtlMap::GetNextAssoc方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。