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

📄 dialog.cpp

📁 FreeAMP(MP3播放)程序源代码-用来研究MP3解码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                           controlRect.top,
                           controlWidth,
                           controlHeight - statusbarHeight,
                           SWP_NOZORDER);

    /*int delta = controlRect.right - controlRect.left - oldListViewRect.right - oldListViewRect.left;

    controlWidth -= delta;

    if(controlWidth < oldListViewRect.right - oldListViewRect.left)
    {
        int32 oldWidth = 0;
        HWND hwnd = m_hPlaylistView;

        oldWidth += ListView_GetColumnWidth(hwnd, 0);
        oldWidth += ListView_GetColumnWidth(hwnd, 1);
        oldWidth += ListView_GetColumnWidth(hwnd, 2);
        oldWidth += ListView_GetColumnWidth(hwnd, 3);
        oldWidth += ListView_GetColumnWidth(hwnd, 4);

        int32 headerResizeAmount = controlWidth - oldWidth;

        int32 eachHeaderAmount = headerResizeAmount/3;
        int32 titleExtraAmount = headerResizeAmount%3;
        int32 width;

        if(eachHeaderAmount)
        {
            width = ListView_GetColumnWidth(m_hPlaylistView, 1);
            width += eachHeaderAmount;    
            ListView_SetColumnWidth(m_hPlaylistView, 1, width);

            width = ListView_GetColumnWidth(m_hPlaylistView, 2);
            width += eachHeaderAmount;
            ListView_SetColumnWidth(m_hPlaylistView, 2, width);

            width = ListView_GetColumnWidth(m_hPlaylistView, 3);
            width += eachHeaderAmount;
            ListView_SetColumnWidth(m_hPlaylistView, 3, width);
        }

        if(titleExtraAmount)
        {
            static uint32 lastColumn = 1;

            while(titleExtraAmount)
            {
                width = ListView_GetColumnWidth(m_hPlaylistView, lastColumn);
   
                if(titleExtraAmount > 0)
                {
                    width += 1;
                    titleExtraAmount--;
                }
                else
                {
                    width -= 1;
                    titleExtraAmount++;
                }

                ListView_SetColumnWidth(m_hPlaylistView, lastColumn, width);

                if(++lastColumn > 3)
                    lastColumn = 1;
            }
        }        
    }*/
                           
    EndDeferWindowPos(hdwp);

    /*GetClientRect(m_hPlaylistView, &controlRect);

    controlWidth = controlRect.right - controlRect.left;

    if(controlWidth > oldListViewRect.right - oldListViewRect.left)
    {
        int32 oldWidth = 0;
        HWND hwnd = m_hPlaylistView;

        oldWidth += ListView_GetColumnWidth(hwnd, 0);
        oldWidth += ListView_GetColumnWidth(hwnd, 1);
        oldWidth += ListView_GetColumnWidth(hwnd, 2);
        oldWidth += ListView_GetColumnWidth(hwnd, 3);
        oldWidth += ListView_GetColumnWidth(hwnd, 4);

        int32 headerResizeAmount = controlWidth - oldWidth;

        int32 eachHeaderAmount = headerResizeAmount/3;
        int32 titleExtraAmount = headerResizeAmount%3;
        int32 width;

        if(eachHeaderAmount)
        {
            width = ListView_GetColumnWidth(m_hPlaylistView, 1);
            width += eachHeaderAmount;    
            ListView_SetColumnWidth(m_hPlaylistView, 1, width);

            width = ListView_GetColumnWidth(m_hPlaylistView, 2);
            width += eachHeaderAmount;
            ListView_SetColumnWidth(m_hPlaylistView, 2, width);

            width = ListView_GetColumnWidth(m_hPlaylistView, 3);
            width += eachHeaderAmount;
            ListView_SetColumnWidth(m_hPlaylistView, 3, width);
        }

        if(titleExtraAmount)
        {
            static uint32 lastColumn = 1;

            while(titleExtraAmount)
            {
                width = ListView_GetColumnWidth(m_hPlaylistView, lastColumn);
   
                if(titleExtraAmount > 0)
                {
                    width += 1;
                    titleExtraAmount--;
                }
                else
                {
                    width -= 1;
                    titleExtraAmount++;
                }

                ListView_SetColumnWidth(m_hPlaylistView, lastColumn, width);

                if(++lastColumn > 3)
                    lastColumn = 1;
            }
        }        
    }*/
}

void MusicBrowserUI::GetMinMaxInfo(MINMAXINFO *pInfo)
{
    pInfo->ptMinTrackSize = m_sMinSize;
}

void MusicBrowserUI::SetMinMaxInfo()
{
	RECT  sLoc, sLoc2;
    
	GetWindowRect(m_hMusicView, &sLoc);
	GetWindowRect(m_hPlaylistView, &sLoc2);
    //m_iCollapseMoveAmount = sLoc2.left - sLoc.left;
}

void MusicBrowserUI::InitDialog(HWND hWnd)
{
    HIMAGELIST      hList;
    

    HINSTANCE hinst = (HINSTANCE)GetWindowLong(m_hWnd, GWL_HINSTANCE);
    HICON appIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_EXE_ICON));

    SetClassLong(m_hWnd, GCL_HICON, (LONG)appIcon);

    m_hWnd = hWnd;
    m_hMusicView = GetDlgItem(m_hWnd, IDC_MUSICTREE);
    m_hPlaylistView = GetDlgItem(m_hWnd, IDC_PLAYLISTBOX);
    m_hPlaylistTitle = GetDlgItem(m_hWnd, IDC_PLAYLISTTITLE);
    m_hMusicViewTitle = GetDlgItem(m_hWnd, IDC_MUSICCATALOGTEXT);

    HBITMAP bmp;
    
    hList = ImageList_Create(16, 16, ILC_COLOR24|ILC_MASK, 10, 0);

    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_CATALOG));
    ImageList_AddMasked(hList, bmp, RGB(255,255,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_PLAYLIST));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ARTIST));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ALBUM));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_TRACK));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ALL));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_UNCATAGORIZED));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_PORTABLE));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_STREAMS));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_WIREDPLANET));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ICECAST));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_SHOUTCAST));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_BUSY));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_CD));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_FAVORITES));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
    

    TreeView_SetImageList(m_hMusicView, hList, TVSIL_NORMAL); 
    
    hList = ImageList_Create(16, 16, ILC_COLOR24|ILC_MASK, 1, 0);

    bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_PLAYING));
    ImageList_AddMasked(hList, bmp, RGB(255,0,0));
    DeleteObject(bmp);
 
    ListView_SetImageList(m_hPlaylistView, hList, LVSIL_SMALL); 

    SetTitles();
    CreateToolbar();

    InitTree();
    InitList();

    // Subclass the listview

    // Set the proc address as a property 
	// of the window so it can get it
	SetProp(m_hPlaylistView,
			"oldproc",
            (HANDLE)GetWindowLong(m_hPlaylistView, GWL_WNDPROC));

    SetProp(m_hPlaylistView,
        "this",
        (HANDLE)this);
	
	// Subclass the window so we can draw it
	SetWindowLong(m_hPlaylistView,
                  GWL_WNDPROC,
                  (DWORD)::ListViewWndProc);

    // Subclass the treeview

    // Set the proc address as a property 
	// of the window so it can get it
	SetProp(m_hMusicView, 
            "oldproc",
            (HANDLE)GetWindowLong(m_hMusicView, GWL_WNDPROC));

    SetProp(m_hMusicView, 
            "this",
            (HANDLE)this);
	
	// Subclass the window so we can handle multi-select
	SetWindowLong(m_hMusicView, 
			      GWL_WNDPROC, 
                  (DWORD)::TreeViewWndProc );  

    // register our OLE drag and drop crap
    OleInitialize(NULL);

    int result;
    m_playlistDropTarget = new DropTarget(m_hPlaylistView);
    //CoLockObjectExternal ((IUnknown*)m_playlistDropTarget, TRUE, TRUE);
    result = RegisterDragDrop(m_hPlaylistView, m_playlistDropTarget);
    
    m_hStatus= CreateStatusWindow(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS,
                                  "", m_hWnd, IDC_STATUS);

    RECT rect;

    GetClientRect(m_hWnd, &rect);

    panes[0] = rect.right - rect.left /*- kControlsWidth*/ - kTimeWidth;
    //panes[1] = panes[0] + kControlsWidth;
    SendMessage(m_hStatus, SB_SETPARTS, kNumPanes, (LPARAM) panes);
    //SendMessage(m_hStatus, SB_SETTEXT, 1|SBT_NOBORDERS , (LPARAM) "");
    SendMessage(m_hStatus, SB_SETTEXT, kNumPanes - 1, (LPARAM) "0:00");

    GetClientRect(m_hStatus, &rect);

    /*CreateWindow("BUTTON",
                 "button",
                 WS_VISIBLE|WS_CHILD,
                 panes[0] + 2,
                 rect.top + 1,
                 kControlsWidth - 2,
                 rect.bottom - rect.top,
                 m_hStatus,
                 NULL,
                 g_hinst,
                 NULL);*/

    UpdateButtonStates();
    m_context->target->AcceptEvent(new Event(CMD_QueryPlayerState));

    m_sMinSize.x = 500;
    m_sMinSize.y = 300;

    if(m_pParent == NULL)
    {
        m_plm->SetActivePlaylist(kPlaylistKey_MasterPlaylist);
    }   
    else if(m_portableDevice)
    {
        m_plm->SetActivePlaylist(kPlaylistKey_PortablePlaylist);
        if(m_plm->IsPortableAvailable(m_portableDevice))
        {
            vector<PlaylistItem*> items;
            m_plm->ReadPortablePlaylist(m_portableDevice, &items);

            m_initialCount = items.size();

            if(m_initialCount)
                m_plm->AddItems(&items);
        }
    }
    else
    {
        m_plm->SetActivePlaylist(kPlaylistKey_ExternalPlaylist);

        if(m_currentListName.size())
            LoadPlaylist(m_currentListName.c_str());
    }       

    UpdateTotalTime();

    // resize window
    char buf[256];
    uint32 size = sizeof(buf);
    int32 x,y,h,w, s;

    m_context->prefs->GetPrefString(kMusicBrowserPositionPref, buf, &size);
    sscanf(buf, " %d , %d , %d , %d, %d", &x, &y, &w, &h, &s);

    if(x >= 0 && y >= 0 && h >= 0  && w >= 0 && s >= 0 && s < w)
    {
        int32 screenX, screenY;

        screenX = GetSystemMetrics(SM_CXSCREEN);
        screenY = GetSystemMetrics(SM_CYSCREEN);

        if(x > screenX)
            x = 0;
        if(y > screenY)
            y = 0;

        MoveWindow(hWnd, x, y, w, h, TRUE);

        /*RECT controlRect;
        int32 controlHeight, controlWidth;

        GetWindowRect(m_hMusicView, &controlRect);
        MapWindowPoints(NULL, m_hWnd, (LPPOINT)&controlRect, 2);
        controlHeight = controlRect.bottom - controlRect.top;
        controlWidth = controlRect.right - controlRect.left;

        MoveWindow(m_hMusicView, controlRect.left, 
                    controlRect.top, s, controlHeight, TRUE);
        */

        RECT catalogRect, playlistRect, titleRect;
        int32 delta;

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

        delta = s - (catalogRect.right - catalogRect.left);
        catalogRect.right = catalogRect.left + s;
        playlistRect.left = playlistRect.left + delta;
        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);

⌨️ 快捷键说明

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