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

📄 dialog.cpp

📁 FreeAMP(MP3播放)程序源代码-用来研究MP3解码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    {
        /*RECT catalogRect,playlistRect;
        
        GetWindowRect(m_hMusicView, &catalogRect);
        GetWindowRect(m_hPlaylistView, &playlistRect);
        MapWindowPoints(NULL, m_hWnd, (LPPOINT)&catalogRect, 2);
        MapWindowPoints(NULL, m_hWnd, (LPPOINT)&playlistRect, 2);

        m_splitterRect.top = playlistRect.top;
        m_splitterRect.bottom = playlistRect.bottom;
        m_splitterRect.left = catalogRect.right + 1;
        m_splitterRect.right = playlistRect.left - 1;*/

        if(PtInRect(&m_splitterRect, sPoint))
        {
            //m_overSplitter = true;
            ::SetCursor(m_hSplitterCursor);
        }
        else
        {
            //m_overSplitter = false;
            ::SetCursor(LoadCursor(NULL, IDC_ARROW));
        }
    }
} 

void MusicBrowserUI::MouseButtonDown(int keys, int x, int y)
{
    RECT catalogRect,playlistRect;
    RECT clientRect;
    POINT pt;

    pt.x = x;
    pt.y = y;

    GetClientRect(m_hWnd, &clientRect);
    //InflateRect(&clientRect, -150, 0);
    clientRect.left += 125;
    clientRect.right -= 175;
    GetWindowRect(m_hMusicView, &catalogRect);
    GetWindowRect(m_hPlaylistView, &playlistRect);
    MapWindowPoints(m_hWnd, NULL, (LPPOINT)&pt, 1);
    MapWindowPoints(m_hWnd, NULL, (LPPOINT)&clientRect, 2);

    m_splitterRect.top = playlistRect.top;
    m_splitterRect.bottom = playlistRect.bottom;
    m_splitterRect.left = catalogRect.right + 1;
    m_splitterRect.right = playlistRect.left - 1;

    if(PtInRect(&m_splitterRect, pt))
    {
        m_trackSplitter = true;
        SetCapture(m_hWnd);
        ClipCursor(&clientRect);
        m_hSavedCursor = ::SetCursor(m_hSplitterCursor);

        HDC hdc = GetDC(NULL);

        HBRUSH oldBrush = (HBRUSH)SelectObject(hdc, m_splitterBrush);

        PatBlt(hdc,
               m_splitterRect.left, 
               m_splitterRect.top, 
               m_splitterRect.right - m_splitterRect.left, 
               m_splitterRect.bottom - m_splitterRect.top, 
               PATINVERT);

        SelectObject(hdc, oldBrush);

        ReleaseDC(NULL, hdc);
    }
}

void MusicBrowserUI::MouseButtonUp(int keys, int x, int y)
{
    POINT pt;

    pt.x = x;
    pt.y = y;

    if(m_trackSplitter)
    {
        m_trackSplitter = false;
        ReleaseCapture();
        ClipCursor(NULL);
        ::SetCursor(m_hSavedCursor);

        HDC hdc = GetDC(NULL);

        HBRUSH oldBrush = (HBRUSH)SelectObject(hdc, m_splitterBrush);

        PatBlt(hdc,
               m_splitterRect.left, 
               m_splitterRect.top, 
               m_splitterRect.right - m_splitterRect.left, 
               m_splitterRect.bottom - m_splitterRect.top, 
               PATINVERT);

        SelectObject(hdc, oldBrush);

        ReleaseDC(NULL, hdc);


        RECT catalogRect, playlistRect, titleRect;
        int32 delta;

        GetWindowRect(m_hMusicView, &catalogRect);
        GetWindowRect(m_hPlaylistView, &playlistRect);
        GetWindowRect(m_hPlaylistTitle, &titleRect);

        delta = (m_splitterRect.right + 1) - playlistRect.left;
        catalogRect.right = m_splitterRect.left - 1;
        playlistRect.left = m_splitterRect.right + 1;
        titleRect.left += delta;

        MapWindowPoints(NULL, m_hWnd, (LPPOINT)&catalogRect, 2);
        MapWindowPoints(NULL, m_hWnd, (LPPOINT)&playlistRect, 2);
        MapWindowPoints(NULL, m_hWnd, (LPPOINT)&titleRect, 2);

        
        MoveWindow(m_hMusicView, 
                  catalogRect.left, 
                  catalogRect.top, 
        	      (catalogRect.right - catalogRect.left),
                  catalogRect.bottom - catalogRect.top,
                  TRUE);

        MoveWindow(m_hPlaylistView, 
                  playlistRect.left,
                  playlistRect.top, 
        	      (playlistRect.right - playlistRect.left),
                  playlistRect.bottom - playlistRect.top,
                  TRUE);

        MoveWindow(m_hPlaylistTitle, 
                  titleRect.left,
                  titleRect.top, 
        	      (titleRect.right - titleRect.left),
                  titleRect.bottom - titleRect.top,
                  TRUE);

        m_splitterRect.top = playlistRect.top;
        m_splitterRect.bottom = playlistRect.bottom;
        m_splitterRect.left = catalogRect.right + 1;
        m_splitterRect.right = playlistRect.left - 1;
    }
}

void MusicBrowserUI::UpdateButtonStates()
{
    // start off disabling everything, then enable only what 
    // should be.

    SendMessage(m_hToolbar, TB_ENABLEBUTTON,
                ID_EDIT_REMOVE, MAKELPARAM(FALSE, 0));

    SendMessage(m_hToolbar, TB_ENABLEBUTTON,
                ID_EDIT_EDITINFO, MAKELPARAM(FALSE, 0));

    SendMessage(m_hToolbar, TB_ENABLEBUTTON,
                ID_EDIT_ADDTRACK, MAKELPARAM(FALSE, 0));    

    SendMessage(m_hToolbar, TB_ENABLEBUTTON,
                ID_EDIT_MOVEUP, MAKELPARAM(FALSE, 0));

    SendMessage(m_hToolbar, TB_ENABLEBUTTON,
                ID_EDIT_MOVEDOWN, MAKELPARAM(FALSE, 0));

    // File Menu
    SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                    ID_FILE_SAVEPLAYLIST, MAKELPARAM(m_bListChanged, 0)); 

    if(m_hPlaylistView == GetFocus())
    {
        // Can we move items up and down?
        uint32 index = ListView_GetItemCount(m_hPlaylistView);
        uint32 count = ListView_GetSelectedCount(m_hPlaylistView);
        uint32 state;

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

        SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                    ID_EDIT_MOVEDOWN, MAKELPARAM(!(state & LVIS_SELECTED || !count), 0)); 

        state = ListView_GetItemState(m_hPlaylistView, 
                                      0, 
                                      LVIS_SELECTED);

        SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                    ID_EDIT_MOVEUP, MAKELPARAM(!(state & LVIS_SELECTED || !count), 0)); 
        
        SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                    ID_EDIT_REMOVE, MAKELPARAM(count!=0, 0)); 

        SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                    ID_EDIT_EDITINFO, MAKELPARAM(count!=0, 0)); 

        SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
            ID_EDIT_ADDTRACK, 0); 
    }

    // what about items which deal with the treeview?

    //HTREEITEM treeSelect = TreeView_GetSelection(m_hMusicView);

    if(m_hMusicView == GetFocus())
    {
        SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
            ID_EDIT_ADDTRACK, 0); 

        uint32 trackCount = 0;
        uint32 playlistCount = 0;

        trackCount = GetSelectedTrackCount();
        playlistCount = GetSelectedPlaylistCount();

        if(trackCount + playlistCount)
        {
            if(!IsItemSelected(m_hNewPlaylistItem) &&
               !IsItemSelected(m_hNewPlaylistItem))
            {
                SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                            ID_EDIT_ADDTRACK, MAKELPARAM(TRUE, 0)); 
            }

            if(!IsItemSelected(m_hPlaylistItem) &&
               !IsItemSelected(m_hNewPlaylistItem) && 
               !IsItemSelected(m_hPortableItem) &&
               !IsItemSelected(m_hNewPortableItem) &&
			   !IsItemSelected(m_hMyMusicItem) &&
               !IsItemSelected(m_hAllItem))
            {
                SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                        ID_EDIT_REMOVE, MAKELPARAM(TRUE, 0)); 
            }
 
            if(!IsItemSelected(m_hPlaylistItem) &&
               !IsItemSelected(m_hNewPlaylistItem) && 
               !IsItemSelected(m_hPortableItem) &&
               !IsItemSelected(m_hNewPortableItem) &&
               trackCount)
            {
                SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                        ID_EDIT_EDITINFO, MAKELPARAM(TRUE, 0));
            }
 
            /*if(!IsItemSelected(m_hNewPlaylistItem) && !IsItemSelected(m_hAllItem) &&
               !IsItemSelected(m_hMyMusicItem) && !IsItemSelected(m_hUncatItem) &&
               !IsItemSelected(m_hPlaylistItem) && !IsItemSelected(m_hPortableItem) &&
               (playlistCount && !trackCount) &&
               !IsItemSelected(m_hMyMusicItem) &&
               !IsItemSelected(m_hUncatItem) &&
               !IsItemSelected(m_hAllItem))
            {
                SendMessage(m_hToolbar, TB_ENABLEBUTTON, 
                        ID_EDIT_EDITINFO, MAKELPARAM(TRUE, 0)); 
            }*/       
        }
        else
        {
            // Edit Menu
            SendMessage(m_hToolbar, TB_ENABLEBUTTON, ID_EDIT_REMOVE, 0); 
            SendMessage(m_hToolbar, TB_ENABLEBUTTON, ID_EDIT_EDITINFO, 0);  
        }
 
    }
    
    //SendMessage(m_hToolbar, TB_ENABLEBUTTON, ID_EDIT_EDIT, 
    //            MAKELONG(oType.length() != 0, 0));    
    //SendMessage(m_hToolbar, TB_ENABLEBUTTON, ID_EDIT_REMOVE, 
    ///            MAKELONG(oType.length() != 0, 0)); 
}

void MusicBrowserUI::UpdateMenuStates()
{
    HMENU        hMenuRoot, hMenu;
    MENUITEMINFO sMenuItem;

    hMenuRoot = GetMenu(m_hWnd);


    // File Menu
    hMenu = GetSubMenu(hMenuRoot, 0); 


    EnableMenuItem(hMenu, ID_FILE_SAVEPLAYLIST, 
                   m_bListChanged ? MF_ENABLED : MF_GRAYED );

    // start off disabled... might enable below
    EnableMenuItem(hMenu, ID_FILE_EXPORTPLAYLIST, MF_GRAYED);

    // Edit Menu
    hMenu = GetSubMenu(hMenuRoot, 1);

    // start off disabled... might enable below
    EnableMenuItem(hMenu, ID_EDIT_REMOVE, MF_GRAYED);

    EnableMenuItem(hMenu, ID_EDIT_EDITINFO, MF_GRAYED);

    sMenuItem.cbSize = sizeof(MENUITEMINFO);
    sMenuItem.fMask =  MIIM_DATA|MIIM_TYPE;
    sMenuItem.fType = MFT_STRING;
    sMenuItem.dwTypeData = "&Remove Items...";
    sMenuItem.cch = strlen(sMenuItem.dwTypeData);

    SetMenuItemInfo(hMenu, ID_EDIT_REMOVE, false, &sMenuItem);

    hMenu = GetSubMenu(hMenuRoot, 5);
    EnableMenuItem(hMenu, ID_EDIT_STARTSIGNATURING,
                   m_sigsExist ? MF_ENABLED : MF_GRAYED);

    sMenuItem.cbSize = sizeof(MENUITEMINFO);
    sMenuItem.fMask =  MIIM_DATA|MIIM_TYPE;
    sMenuItem.fType = MFT_STRING;
    sMenuItem.dwTypeData = "Start Signaturing";
    if (!m_sigsStart)
        sMenuItem.dwTypeData = "Stop Signaturing";
    sMenuItem.cch = strlen(sMenuItem.dwTypeData);

    SetMenuItemInfo(hMenu, ID_EDIT_STARTSIGNATURING, false,
                    &sMenuItem);

    bool advancedRelate = false;
    m_context->prefs->GetPrefBoolean(kAdvancedRelatablePref, &advancedRelate);
    EnableMenuItem(hMenu, ID_EDIT_SUBMITPLAYLIST,
		           advancedRelate ? MF_ENABLED : MF_GRAYED);
 
    hMenu = GetSubMenu(hMenuRoot, 1);

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

    if(count && m_hPlaylistView == GetFocus())
    {
        uint32 state;

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

        EnableMenuItem(hMenu, ID_EDIT_MOVEDOWN, 
                       (state & LVIS_SELECTED) ? MF_GRAYED : MF_ENABLED );

        state = ListView_GetItemState(m_hPlaylistView, 
                                      0, 
                                      LVIS_SELECTED);

        EnableMenuItem(hMenu, ID_EDIT_MOVEUP, 
                       (state & LVIS_SELECTED) ? MF_GRAYED : MF_ENABLED );

        EnableMenuItem(hMenu, ID_EDIT_REMOVE, MF_ENABLED);

        EnableMenuItem(hMenu, ID_EDIT_EDITINFO, MF_ENABLED);


        sMenuItem.cbSize = sizeof(MENUITEMINFO);
        sMenuItem.fMask = MIIM_DATA|MIIM_TYPE;
        sMenuItem.fType = MFT_STRING;
        sMenuItem.dwTypeData = "&Remove Tracks from Playlist";
        sMenuItem.cch = strlen(sMenuItem.dwTypeData);

        SetMenuItemInfo(hMenu, ID_EDIT_REMOVE, false, &sMenuItem);
    }
    else
    {    
        EnableMenuItem(hMenu, ID_EDIT_MOVEUP, MF_GRAYED);
        EnableMenuItem(hMenu, ID_EDIT_MOVEDOWN, MF_GRAYED);
    }

    // what about items which deal with the treeview?

    EnableMenuItem(hMenu, ID_EDIT_ADDTRACK, MF_GRAYED);

    //HTREEITEM treeSelect = TreeView_GetSelection(m_hMusicView);

    uint32 trackCount = 0;
    uint32 playlistCount = 0;

    trackCount = GetSelectedTrackCount();
    playlistCount = GetSelectedPlaylistCount();

    if((trackCount + playlistCount) && m_hMusicView == GetFocus())
    {
        if(!IsItemSelected(m_hNewPlaylistItem) &&
            !IsItemSelected(m_hNewPlaylistItem))
        {
            EnableMenuItem(hMenu, ID_EDIT_ADDTRACK, MF_ENABLED );
        }

        if(!IsItemSelected(m_hPlaylistItem) &&
           !IsItemSelected(m_hNewPlaylistItem) && 
           !IsItemSelected(m_hPortableItem) &&
           !IsItemSelected(m_hNewPortableItem) &&
		   !IsItemSelected(m_hMyMusicItem) &&
           !IsItemSelected

⌨️ 快捷键说明

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