void CLibraryHeaderBar::OnLibraryView() { CMenu pMenu; pMenu.CreatePopupMenu(); CLibraryFrame* pFrame = (CLibraryFrame*)GetParent(); CList< CLibraryView* >* pViews = pFrame->GetViews(); for ( POSITION pos = pViews->GetHeadPosition() ; pos ; ) { CLibraryView* pView = (CLibraryView*)pViews->GetNext( pos ); if ( ! pView->m_bAvailable ) continue; CString strName; Skin.LoadString( strName, pView->m_nCommandID ); LPCTSTR pszName = _tcschr( strName, '\n' ); pszName = ( pszName ) ? ( pszName + 1 ) : (LPCTSTR)strName; pMenu.AppendMenu( MF_STRING | ( pView == m_pLastView ? MF_CHECKED : 0 ), pView->m_nCommandID, pszName ); } m_pCoolMenu = new CCoolMenu(); m_pCoolMenu->AddMenu( &pMenu, TRUE ); m_pCoolMenu->SetWatermark( Skin.GetWatermark( _T("CCoolMenu") ) ); if ( UINT nCmd = ThrowMenu( ID_LIBRARY_VIEW, &pMenu, this, TRUE, TRUE ) ) { for ( POSITION pos = pViews->GetHeadPosition() ; pos ; ) { CLibraryView* pView = (CLibraryView*)pViews->GetNext( pos ); if ( pView->m_nCommandID == nCmd ) { pFrame->SetView( pView ); } } } delete m_pCoolMenu; m_pCoolMenu = NULL; }