• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 添加系統圖象列表到列表控件

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    一個系統圖象列表包括每個文件、文件夾、縮略圖的圖標。根據這個就可以建立一個自定義的資源管理器風格的運用程序。第一步包括從系統獲得大小圖標(假如你都你都需要的話),然后就是將他們分別分配給一個CImageList對象并把它們添加給你的列表控件。最后不
    一個系統圖象列表包括每個文件、文件夾、縮略圖的圖標。根據這個就可以建立一個自定義的資源管理器風格的運用程序。第一步包括從系統獲得大小圖標(假如你都你都需要的話),然后就是將他們分別分配給一個CImageList對象并把它們添加給你的列表控件。最后不要忘了在析構函數里執行Detach()操作,否則系統中所有的圖標將消失,你只能重新啟動你的計算機了(我就碰到過好幾次這樣的教訓)。

      首先,在你的列表控件類里添加下面兩個數據成員:

    CImageList m_smallImageList;
    CImageList m_largeImageList;
    接著,添加這個函數:
    void CSystemListCtrl::InitializeSystemImageList()
    {
    //建立圖象列表
    HIMAGELIST hSystemSmallImageList, hSystemLargeImageList;
    SHFILEINFO ssfi, lsfi;

    //獲得指向系統小圖標的句柄
    hSystemSmallImageList = (HIMAGELIST)SHGetFileInfo( (LPCTSTR)_T("C:\"), 0,
        &ssfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
     //把它分配給小圖象列表
     //不要忘了在你的析構函數里執行m_smallImageList.Detach()操作

    m_smallImageList.Attach(hSystemSmallImageList);

    //對大圖標做同樣的工作
    hSystemLargeImageList = (HIMAGELIST)SHGetFileInfo( (LPCTSTR)_T("C:\"),
       0, &lsfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_ICON);
    m_largeImageList.Attach(hSystemLargeImageList);

    //給列表控件設置圖象列表
    SetImageList(&m_smallImageList, LVSIL_SMALL);
    SetImageList(&m_largeImageList, LVSIL_NORMAL);
    }
    同時,你需要下面這個函數來取得你要顯示的每一項的圖標的ID。
    int CSystemListCtrl::GetIconIndex(const CString& csFileName)
    //完整的路徑以及文件名
    {
     SHFILEINFO sfi;

     SHGetFileInfo((LPCTSTR)csFileName,0,&sfi,sizeof(SHFILEINFO),
       SHGFI_SYSICONINDEX | SHGFI_SMALLICON );

     return sfi.iIcon;
    }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>