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

📄 downloadui.cpp

📁 FreeAMP(MP3播放)程序源代码-用来研究MP3解码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                    SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));

                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    break;
                }

                case 1:
                {
                    displayString = string("Album :");
                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    rcClip.left = dis->rcItem.left + dataOffset;

                    displayString = string("");

                    if(dli)
                        displayString = dli->GetMetaData().Album();

                    SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));

                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);
                    break;
                }

                case 2:
                {
                    displayString = string("Title :");
                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    rcClip.left = dis->rcItem.left + dataOffset;

                    displayString = string("");

                    if(dli)
                        displayString = dli->GetMetaData().Title();

                    SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));

                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);
                    break;
                }

                case 3:
                {
                    displayString = string("Genre :");
                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    rcClip.left = dis->rcItem.left + dataOffset;

                    displayString = string("");

                    if(dli)
                        displayString = dli->GetMetaData().Genre();


                    SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));

                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);
                    break;
                }

                case 4:
                {
                    displayString = string("Playlist :");
                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    rcClip.left = dis->rcItem.left + dataOffset;

                    displayString = string("");
                    if(dli)
                        displayString = dli->PlaylistName();

                    SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));

                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);
                    break;
                }

                case 5:
                {
                    displayString = string("File Name :");
                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    rcClip.left = dis->rcItem.left + dataOffset;

                    displayString = string("");
                    if(dli)
                        displayString = dli->DestinationFile();

                    SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));

                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);
                    break;
                }

                case 6:
                {
                    displayString = string("File Size :");
                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    rcClip.left = dis->rcItem.left + dataOffset;

                    ostringstream ost;
                    float total;
                    
                    ost.precision(2);
                    ost.flags(ios_base::fixed);

                    displayString = string("");
                    if(dli)
                    {
                        total = dli->GetTotalBytes();

                        if(total >= 1048576)
                        {
                            total /= 1048576;
                            ost <<  total << " MB";
                        }
                        else if(total >= 1024)
                        {
                            total /= 1024;
                            ost  << total << " KB";
                        }
                        else
                        {
                            ost <<  dli->GetTotalBytes() << " Bytes";
                        }
                   
                        displayString = ost.str();
                    }

                    SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));

                    ExtTextOut( dis->hDC, 
                        rcClip.left, rcClip.top + 1, 
                        ETO_CLIPPED | ETO_OPAQUE,
                        &rcClip, 
                        displayString.c_str(),
                        displayString.size(),
                        NULL);

                    break;
                }
            }

            SetTextColor(dis->hDC, GetSysColor(COLOR_WINDOWTEXT));
            SetBkColor(dis->hDC, GetSysColor(COLOR_WINDOW));

            break;
        }
    }

    return result;
}

BOOL DownloadUI::Destroy()
{

    return TRUE;
}


BOOL DownloadUI::Command(int32 command, HWND src)
{
    switch(command)
    {
        case IDC_SHOWHELP:
        {
            ShowHelp();
            break;
        }

        case IDC_RESUME:
        case IDC_PAUSE:
        case IDC_CANCEL:
        {
            uint32 itemCount = ListView_GetItemCount(m_hwndList);

            if(itemCount)
            {
                uint32 selected = ListView_GetSelectedCount(m_hwndList);

                if(selected)
                {
                    DownloadItem* dli = NULL;
                    LV_ITEM item;

                    for(uint32 i = 0; i < itemCount; i++)
                    {
                        if(ListView_GetItemState(m_hwndList, i, LVIS_SELECTED) & LVIS_SELECTED)
                        {
                            item.mask = LVIF_PARAM;
                            item.iItem = i;
                            item.lParam = 0;

                            if(ListView_GetItem(m_hwndList, &item))
                            {
                                dli = (DownloadItem*)item.lParam;
                                break;
                            }
                        }
                    }

                    if(dli)
                    {
                       switch(command)
                       {
                            case IDC_PAUSE:
                            {
                                m_dlm->PauseDownloads();
                                m_dlm->CancelDownload(dli, true);
                                break;
                            }

                            case IDC_CANCEL:
                            {
                                m_dlm->CancelDownload(dli, false);  
                                break;
                            }

                            case IDC_RESUME:
                            {
                                char szText[100];
                                GetWindowText(m_hwndResume, szText, 100);

                                if (strcmp(szText, "Start") == 0)
                                    m_dlm->ResumeDownloads();
                                else
                                    m_dlm->QueueDownload(dli, true); 
                                    
                                break;
                            }
                        }
                        SetButtonStates(dli);
                    }
                }
            }

            break;
        }

        case IDC_ADDURL:
        {
            HWND hwndURL = GetDlgItem(m_hwnd, IDC_URL);

            uint32 length = GetWindowTextLength(hwndURL) + 1; // + 0x00

            if(length)
            {
                char* sp = NULL;
                char* url = new char[length + 7]; // http://
                
                GetWindowText(hwndURL, url + 7, length);

                if(sp = strstr(url + 7, "://"))
                {
                    if(strncasecmp(url + 7, "http://", 7))
                    {
                        MessageBox(m_hwnd, 
                                   "Only HTTP downloads are supported at this time.",
                                   "Invalid protocol",
                                   MB_OK|MB_ICONINFORMATION);
                        break;
                    }

                    sp = url + 7;
                }
                else
                {
                    memcpy(url, "http://", 7);
                    sp = url;
                }

                m_dlm->AddItem(sp);
            
                delete [] url;
                
                SetWindowText(hwndURL, "");
            }
            break;
        }

        case IDC_CLOSE:
        {
            if (GetAsyncKeyState(VK_SHIFT) < 0)
            {
                ShowWindow(GetDlgItem(m_hwnd, IDC_DLMTEXT), SW_HIDE);
                ShowWindow(GetDlgItem(m_hwnd, IDC_FREETRACKS), SW_HIDE);
                ShowWindow(GetDlgItem(m_hwnd, IDC_URL), SW_SHOW);
                ShowWindow(GetDlgItem(m_hwnd, IDC_ADDURL), SW_SHOW);
                break;
            }

            SendMessage(m_hwnd, WM_CLOSE, 0, 0);
            break;
        }
		case IDC_CHECK1:
		{
			bool checkSet = false;
			if (Button_GetCheck(m_hwndCheck) == BST_CHECKED)
				checkSet = true;

			m_prefs->SetPrefBoolean(kCloseDLMOnCompletePref, checkSet);
			break;
		}
    }

    return TRUE;        
}

BOOL DownloadUI::Notify(int32 controlId, NMHDR* nmh)
{
    BOOL result = TRUE;

    switch(controlId)
    {
        case IDC_LIST:
        {
            NM_LISTVIEW* nmlv = (NM_LISTVIEW*)nmh;

            if(nmh->code == LVN_ITEMCHANGED)
            {
                ListView_RedrawItems(m_hwndInfo, 0, ListView_GetItemCount(m_hwndInfo) - 1);
                SetButtonStates((DownloadItem*)nmlv->lParam);
            }

            break;
        }

    }

    return result;
}


void DownloadUI::SetButtonStates(DownloadItem *dli)
{
   switch(dli->GetState())
   {
       case kDownloadItemState_Queued:
           EnableWindow(m_hwndPause, FALSE);

⌨️ 快捷键说明

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