int CSortListCtrl::AddItem( LPCTSTR pszText, ... )
{
const int iIndex = InsertItem( GetItemCount(), pszText ); LPTSTR* arrpsz = new LPTSTR[ m_iNumColumns ];
arrpsz[ 0 ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ 0 ], pszText ); va_list list;
va_start( list, pszText ); for( int iColumn = 1; iColumn < m_iNumColumns; iColumn++ )
{
pszText = va_arg( list, LPCTSTR );
ASSERT_VALID_STRING( pszText );
VERIFY( CListCtrl::SetItem( iIndex, iColumn, LVIF_TEXT, pszText, 0, 0, 0, 0 ) ); arrpsz[ iColumn ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ iColumn ], pszText );
} va_end( list ); VERIFY( SetTextArray( iIndex, arrpsz ) ); return iIndex;
}
、、、、、
我也见过Catch (...) 这种用法,有能解释一下的吗?
{
const int iIndex = InsertItem( GetItemCount(), pszText ); LPTSTR* arrpsz = new LPTSTR[ m_iNumColumns ];
arrpsz[ 0 ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ 0 ], pszText ); va_list list;
va_start( list, pszText ); for( int iColumn = 1; iColumn < m_iNumColumns; iColumn++ )
{
pszText = va_arg( list, LPCTSTR );
ASSERT_VALID_STRING( pszText );
VERIFY( CListCtrl::SetItem( iIndex, iColumn, LVIF_TEXT, pszText, 0, 0, 0, 0 ) ); arrpsz[ iColumn ] = new TCHAR[ lstrlen( pszText ) + 1 ];
(void)lstrcpy( arrpsz[ iColumn ], pszText );
} va_end( list ); VERIFY( SetTextArray( iIndex, arrpsz ) ); return iIndex;
}
、、、、、
我也见过Catch (...) 这种用法,有能解释一下的吗?
在psdk内搜搜这个va_start可以获得更多信息
只是C而已
表示捕获所有异常。通常用在你不知道会发生什么异常的时候用。
---------------------------------------有时必需这样做, 为了回收局部资源, 如果处理不了这个异常就 再throw 出去正常的处理