⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 event.cpp

📁 vc++ mp3 源码下载 使用vc写的mp3 播放器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            }
        } 
    }
}

int32 MusicBrowserUI::Notify(WPARAM command, NMHDR *pHdr)
{
    int32 result = 0;

	TOOLTIPTEXT *pToolTipText;
    
    
    if (pHdr->idFrom == IDC_MUSICTREE)
    {
        NM_TREEVIEW* pTreeView = (NM_TREEVIEW*)pHdr;

        switch(pTreeView->hdr.code)
        {
            case TVN_DELETEITEM:
            {
                TreeData* treedata = (TreeData*)pTreeView->itemOld.lParam;

                if(treedata)
                    delete treedata; 

                break;
            }

            case TVN_BEGINDRAG:
            {
                TVBeginDrag(m_hMusicView, pTreeView);
                break;
            }

            case TVN_KEYDOWN:
            {
                TV_KEYDOWN* pnkd = (TV_KEYDOWN*)pHdr; 

                if(pnkd->wVKey == VK_DELETE)
                    RemoveEvent();  

                break;
            }

            case TVN_BEGINLABELEDIT:
            {
                TV_DISPINFO* info = (TV_DISPINFO*)pHdr;
                HTREEITEM item = info->item.hItem;

                if(item == m_hMyMusicItem ||
                   item == m_hPlaylistItem ||
                   item == m_hAllItem ||
                   item == m_hUncatItem ||
                   item == m_hNewPlaylistItem ||
                   item == m_hPortableItem ||
                   TreeView_GetParent(m_hMusicView, item) == m_hPortableItem)
                {
                    result = TRUE;
                }

                break;
            }

            case TVN_ENDLABELEDIT:
            {
                TV_DISPINFO* info = (TV_DISPINFO*)pHdr;
                TV_ITEM tv_item = info->item;

                // was the operation cancelled?
                if(tv_item.pszText)
                {
                    TreeData* treedata = (TreeData*)tv_item.lParam;

                    if(treedata)
                    {
                        if(treedata->IsTrack())
                        {
                            // just change the title for this song
                            UpdateTrackName(treedata->m_pTrack, 
                                            tv_item.pszText);
                        } 
                        else if(treedata->IsPlaylist())
                        {
                            // just change the title for this playlist
                            UpdatePlaylistName(treedata->m_oPlaylistPath, 
                                               tv_item.pszText);
                        }
                        else if(treedata->IsAlbum())
                        {
                            // need to change the album for all tracks in album
                            UpdateAlbumName(treedata->m_pAlbum, 
                                            tv_item.pszText);
                        }
                        else if(treedata->IsArtist())
                        {
                            // need to change the artist for all albums
                            // and tracks by this artist
                            UpdateArtistName(treedata->m_pArtist, 
                                             tv_item.pszText);
                        }
                        else if(treedata->IsUncatagorized())
                        {
                            // just change the title for this song
                            UpdateUncatagorizedTrackName(treedata->m_pTrack, 
                                            tv_item.pszText);
                        }
                    }

                    result = TRUE;
                }

                break;
            }

            case TVN_ITEMEXPANDING:
            {
                if(!TreeView_GetChild(m_hMusicView, 
                                      pTreeView->itemNew.hItem))
                {
                    TreeData* treedata = (TreeData*)pTreeView->itemNew.lParam;

                    if(pTreeView->itemNew.hItem == m_hMyMusicItem)
                    {
                        FillArtists();
                    }
                    else if(pTreeView->itemNew.hItem == m_hAllItem)
                    {
                        FillAllTracks();
                    }
                    else if(pTreeView->itemNew.hItem == m_hUncatItem)
                    {
                        FillUncatTracks();
                    }
                    else if(treedata && treedata->GetLevel() == 1)
                    {
                        FillAlbums(&pTreeView->itemNew);
                    }
                    else if(treedata && treedata->GetLevel() == 2)
                    {
                        FillTracks(&pTreeView->itemNew);
                    }
                    else if(pTreeView->itemNew.hItem == m_hPlaylistItem)
                    {
                        FillPlaylists();
                    }
                    else if(pTreeView->itemNew.hItem == m_hIceCastItem)
                    {
                        FillIceCast();
                    }
                    else if(pTreeView->itemNew.hItem == m_hWiredPlanetItem)
                    {
                        FillWiredPlanet();
                    }
                    else if(pTreeView->itemNew.hItem == m_hPortableItem)
                    {
                        FillPortables();
                    }
                }

                break;
            }

            case TVN_SELCHANGED:
            {
                UpdateButtonMenuStates();
                break;
            }

            case NM_DBLCLK:
            {
                /*int32 lParam;
                lParam = GetCurrentItemFromMousePos();

                TV_ITEM tv_item;
                TV_HITTESTINFO tv_htinfo;


                GetCursorPos(&tv_htinfo.pt);
                ScreenToClient(m_hMusicView, &tv_htinfo.pt);

                if(TreeView_HitTest(m_hMusicView, &tv_htinfo))
                {
                    tv_item.hItem = TreeView_GetSelection(m_hMusicView); 
                    tv_item.mask = TVIF_PARAM | TVIF_HANDLE;
                    TreeView_GetItem(m_hMusicView, &tv_item);

                    TreeData* treedata = (TreeData*)tv_item.lParam;

                    if(treedata->IsTrack())
                    {
                        PlaylistItem *item;
                
                        item = new PlaylistItem(*treedata->m_pTrack);
                        m_oPlm->AddItem(item, false);
                    } 
                    else if(treedata->IsPlaylist())
                    {
                        m_oPlm->ReadPlaylist(treedata->m_oPlaylistPath.c_str());
                    }
                    else if(treedata->IsPortable())
                    {
                        EditPortablePlaylist(treedata->m_pPortable);
                    }
                    else if(tv_htinfo.hItem == m_hNewPlaylistItem)
                    {
                        NewPlaylist();
                    }
                    else if(tv_htinfo.hItem == m_hNewPortableItem)
                    {
                        m_context->target->AcceptEvent(new ShowPreferencesEvent(3));
                    }
                }*/
                break;
            }

            case NM_RCLICK:
            {
                HMENU menu;
                HMENU subMenu;
                POINT sPoint;
                uint32 trackCount = 0;
                uint32 playlistCount = 0;

                trackCount = GetSelectedTrackCount();
                playlistCount = GetSelectedPlaylistCount();
            
                GetCursorPos(&sPoint);

                menu = LoadMenu(g_hinst, MAKEINTRESOURCE(IDR_TVPOPUP));
                subMenu = GetSubMenu(menu, 0);

                if(m_pParent)
                {
                    DeleteMenu(subMenu, ID_POPUP_ADDTRACK_PLAY, MF_BYCOMMAND);
                }

                if( IsItemSelected(m_hMyMusicItem) ||
                    IsItemSelected(m_hPlaylistItem) ||
                    IsItemSelected(m_hAllItem) ||
                    IsItemSelected(m_hUncatItem) ||
                    (IsItemSelected(m_hNewPlaylistItem) && !(playlistCount + trackCount)))
                {
                    EnableMenuItem(subMenu,
                                   ID_POPUP_REMOVE,
                                   MF_BYCOMMAND|MF_GRAYED);
                }


                if( playlistCount > 1 ||
                    IsItemSelected(m_hMyMusicItem) ||
                    IsItemSelected(m_hPlaylistItem) ||
                    IsItemSelected(m_hAllItem) ||
                    IsItemSelected(m_hUncatItem) ||
                    (IsItemSelected(m_hNewPlaylistItem) && !(playlistCount + trackCount)))
                {
                    EnableMenuItem(subMenu,
                                   ID_POPUP_EDITINFO,
                                   MF_BYCOMMAND|MF_GRAYED);    
                }


                if( trackCount > 1 ||
                    playlistCount > 1 ||
                    IsItemSelected(m_hMyMusicItem) ||
                    IsItemSelected(m_hPlaylistItem) ||
                    IsItemSelected(m_hAllItem) ||
                    IsItemSelected(m_hUncatItem) ||
                    IsItemSelected(m_hNewPlaylistItem))
                {
                    EnableMenuItem(subMenu,
                                   ID_POPUP_RENAME,
                                   MF_BYCOMMAND|MF_GRAYED);                         
                }

                if(trackCount == 0)
                {
                    EnableMenuItem(subMenu,
                                   ID_POPUP_EDITINFO,
                                   MF_BYCOMMAND|MF_GRAYED);

                    if( IsItemSelected(m_hNewPlaylistItem) &&
                        playlistCount == 1)
                    {
                        EnableMenuItem(subMenu,
                                   ID_POPUP_ADDTRACK,
                                   MF_BYCOMMAND|MF_GRAYED);

                        EnableMenuItem(subMenu,
                                   ID_POPUP_ADDTRACK_PLAY,
                                   MF_BYCOMMAND|MF_GRAYED);

                        EnableMenuItem(subMenu,
                                   ID_POPUP_REMOVE,
                                   MF_BYCOMMAND|MF_GRAYED);

                        EnableMenuItem(subMenu,
                                   ID_POPUP_RENAME,
                                   MF_BYCOMMAND|MF_GRAYED);

                        EnableMenuItem(subMenu,
                                   ID_POPUP_EDITPLAYLIST,
                                   MF_BYCOMMAND|MF_GRAYED);
                    }
                }

                if(!playlistCount || trackCount)
                {
                    DeleteMenu(subMenu, ID_POPUP_EDITPLAYLIST, MF_BYCOMMAND);
                }

                TrackPopupMenu(subMenu, 
                               TPM_LEFTALIGN|TPM_LEFTBUTTON, 
                               sPoint.x, sPoint.y, 
                               0, m_hWnd, NULL);

                DestroyMenu(menu);

                break;
            }

            /*case ??:
            {
                TV_HITTESTINFO sHit;
                HTREEITEM      hItem;
                POINT          sPoint;
            
                sHit.flags = TVHT_ONITEM;
          
                GetCursorPos(&sPoint);
                ScreenToClient(m_hWnd, &sPoint);
                ClientToWindow(m_hWnd, &sPoint); 
                sHit.pt = sPoint;
                hItem = TreeView_HitTest(m_hMusicView, &sHit);
                if (hItem == m_hPlaylistItem)
                   SendMessage(m_hStatus, SB_SETTEXT, 0, 
                               (LPARAM)"This tree item contains all of your playlists.");
                else               
                if (hItem == m_hMyMusicItem)
                   SendMessage(m_hStatus, SB_SETTEXT, 0, 
                               (LPARAM)"This tree item contains all of your music.");
                else               
                if (hItem == m_hAllItem)
                   SendMessage(m_hStatus, SB_SETTEXT, 0, 
                               (LPARAM)"This tree item lists all of your music tracks.");
                else               
                if (hItem == m_hUncatItem)
                   SendMessage(m_hStatus, SB_SETTEXT, 0, 
                               (LPARAM)"This tree item lists all of your uncategorized music tracks.");
                else               
                   SendMessage(m_hStatus, SB_SETTEXT, 0, (LPARAM)"");

                break;
            }*/

        }
    }
    else if(pHdr->idFrom == IDC_PLAYLISTBOX)
    {
        NM_LISTVIEW* pListView = (NM_LISTVIEW*)pHdr;

        switch(pListView->hdr.code)
        {
            case LVN_BEGINDRAG:
            {
                LVBeginDrag(m_hPlaylistView, pListView);
                break;
            }

            case NM_RCLICK:
            {
                HMENU menu;
                HMENU subMenu;
                POINT sPoint;
                uint32 trackCount = 0;
                uint32 playlistCount = 0;

                trackCount = GetSelectedTrackCount();
                playlistCount = GetSelectedPlaylistCount();
            
                GetCursorPos(&sPoint);

                menu = LoadMenu(g_hinst, MAKEINTRESOURCE(IDR_LVPOPUP));
                subMenu = GetSubMenu(menu, 0);

                if(m_pParent)
                {
                    DeleteMenu(subMenu, ID_POPUP_PLAY, MF_BYCOMMAND);
                }

                // Can we move items up and down?
                uint32 count = ListView_GetItemCount(m_hPlaylistView);
                uint32 selected = ListView_GetSelectedCount(m_hPlaylistView);

                if(count)
                {
                    uint32 state;

                    EnableMenuItem(subMenu, ID_POPUP_PLAY, MF_BYCOMMAND|
                                   (selected > 1) ? MF_GRAYED : MF_ENABLED );

                    state = ListView_GetItemState(m_hPlaylistView,
                                                  count - 1, 
                                                  LVIS_SELECTED);

                    EnableMenuItem(subMenu, ID_POPUP_MOVEDOWN, MF_BYCOMMAND|
                                   (state & LVIS_SELECTED) ? MF_GRAYED : MF_ENABLED );

                    state = ListView_GetItemState(m_hPlaylistView, 
                                                  0, 
                                                  LVIS_SELECTED);

                    EnableMenuItem(subMenu, ID_POPUP_MOVEUP, MF_BYCOMMAND|
                                   (state & LVIS_SELECTED) ? MF_GRAYED : MF_ENABLED );
                }
                else
                {
                    EnableMenuItem(subMenu, ID_POPUP_PLAY, MF_BYCOMMAND|MF_GRAYED);
                    EnableMenuItem(subMenu, ID_POPUP_MOVEUP, MF_BYCOMMAND|MF_GRAYED);
                    EnableMenuItem(subMenu, ID_POPUP_MOVEDOWN, MF_BYCOMMAND|MF_GRAYED);
                    EnableMenuItem(subMenu, ID_POPUP_REMOVE, MF_BYCOMMAND|MF_GRAYED);
                    EnableMenuItem(subMenu, ID_POPUP_EDITINFO, MF_BYCOMMAND|MF_GRAYED);
                }

                TrackPopupMenu(subMenu, 
                               TPM_LEFTALIGN, sPoint.x, sPoint.y, 
                               0, m_hWnd, NULL);

                DestroyMenu(menu);
                break;
            }

            case LVN_ITEMCHANGED:
            {
                UpdateButtonMenuStates();
                break;
            }

            case NM_DBLCLK:
            {
                // only do this for the root browser
                if(!m_pParent)
                {
                    m_playerEQ->AcceptEvent(new Event(CMD_Stop));
                    m_oPlm->SetCurrentIndex(pListView->iItem);
                    m_playerEQ->AcceptEvent(new Event(CMD_Play));
                }
                break;
            }

            case LVN_COLUMNCLICK:
            {
                int column = pListView->iSubItem;

                switch(column)
                {
                    case 1:
                        SendMessage(m_hWnd, WM_COMMAND, ID_SORT_TITLE, 0);
                        break;

                    case 2:
                        SendMessage(m_hWnd, WM_COMMAND, ID_SORT_ARTIST, 0);
                        break;

                    case 3:
                        SendMessage(m_hWnd, WM_COMMAND, ID_SORT_ALBUM, 0);
                        break;

                    case 4:
                        SendMessage(m_hWnd, WM_COMMAND, ID_SORT_LENGTH, 0);
                        break;
                }
                break;
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -