void CSchemaCombo::Load(LPCTSTR pszSelectURI, int nType, int nAvailability, BOOL bReset) { if ( ( GetStyle() & CBS_OWNERDRAWVARIABLE ) == 0 ) { ModifyStyle( 0, CBS_OWNERDRAWVARIABLE|CBS_HASSTRINGS ); } SetExtendedUI(); m_nType = nType; m_nAvailability = nAvailability; if ( bReset ) ResetContent(); if ( bReset && m_sNoSchemaText.GetLength() ) { SetItemData( AddString( _T(" ") ), 0 ); SetCurSel( 0 ); } for ( POSITION pos = SchemaCache.GetIterator() ; pos ; ) { CSchemaPtr pSchema = SchemaCache.GetNext( pos ); BOOL bSelected = pSchema->CheckURI( pszSelectURI ); if ( ! bReset ) { int nIndex = FindSchema( pSchema ); if ( nIndex >= 0 ) { if ( bSelected ) SetCurSel( nIndex ); continue; } } if ( ( bSelected || pSchema->m_nType == nType || nType == -1 ) && ( bSelected || pSchema->m_nAvailability <= nAvailability ) ) { int nIndex = AddString( pSchema->m_sTitle ); SetItemData( nIndex, (LPARAM)pSchema ); if ( bSelected ) SetCurSel( nIndex ); } } if ( bReset && nAvailability < CSchema::saMax ) { SetItemData( AddString( _T("ZZZ") ), 0 ); } }
void CSchemaCombo::Select(LPCTSTR pszURI) { for ( int nItem = 0 ; nItem < GetCount() ; nItem++ ) { CSchemaPtr pSchema = (CSchemaPtr)GetItemData( nItem ); if ( pSchema != NULL && pSchema->CheckURI( pszURI ) ) { SetCurSel( nItem ); return; } } SetCurSel( 0 ); }