• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ListCtrl排序操作心得

            1. 排序函數(shù)。
               排序主要依靠的是SortItems(CompareProc , (LPARAM)this)函數(shù),因此需要一個排序的靜態(tài)函數(shù)CompareProc 作為參數(shù),在CompareProc 函數(shù)中,獲得ItemText的操作不可以使用簡單的GetItemText(lParam1,szItemText)函數(shù),因為在排序操作中l(wèi)Param1不是靜態(tài)的Index(由于排序過程中Index在不斷變化)。所以需要在每個Item中先使用SetItemData保存Index,這樣的Index才是靜態(tài)的。在排序時,這樣操作:
             1int CListInfo::CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
             2{
             3    // lParamSort contains a pointer to the list view control.
             4    // The lParam of an item is just its index.
             5    CString strFir , strSec;
             6    int cmp = 0;
             7    CListInfo* pListInfo = (CListInfo*) lParamSort;
             8
             9    LVFINDINFO info; 
            10    int nIndex; 
            11    info.flags = LVFI_PARAM; //set LVFI_PARAM to info
            12    info.lParam = lParam1; //get the item text item data(lParam1)
            13    if ( (nIndex=pListInfo->FindItem(&info)) != -1
            14        strFir = pListInfo->GetItemText(nIndex, pListInfo->m_nSortCol); 
            15    info.lParam = lParam2; //get the item text item data(lParam2)
            16    if ( (nIndex=pListInfo->FindItem(&info)) != -1)
            17        strSec = pListInfo->GetItemText(nIndex, pListInfo->m_nSortCol); 
            18
            19    cmp = strFir.CompareNoCase(strSec);
            20
            21    return pListInfo->m_bAscending ? cmp : -cmp;
            22}
            這里使用了FindItem來獲得Item的靜態(tài)Index。


            2. 使用表示上下的小圖標(biāo)來表示排序順序。
               首先需要給表頭欄添加小圖標(biāo):
               CImageList m_ImageList;
               m_ImageList.Create(IDB_SORT , 16 , 1 , RGB(255 , 255 , 255));
               GetHeaderCtrl()->SetImageList(&m_ImageList);
               點(diǎn)擊了表頭欄后,需要按照排序順序來選擇貼圖:
               
             1HDITEM hdi;
             2CHeaderCtrl* pHdrCtrl = GetHeaderCtrl();
             3int nCount = pHdrCtrl->GetItemCount();
             4
             5for (int nItem = 0; nItem < nCount; nItem++)
             6{
             7    pHdrCtrl->GetItem(nItem, &hdi);
             8
             9    if (nItem == m_nSortCol)
            10    {
            11        hdi.mask= HDI_IMAGE | HDI_FORMAT;
            12
            13        hdi.iImage = m_bAscending ? 0 : 1;
            14        hdi.fmt = HDF_LEFT | HDF_STRING |HDF_IMAGE | HDF_BITMAP_ON_RIGHT;
            15    }

            16    else
            17    {
            18        hdi.mask= HDI_FORMAT;
            19
            20        hdi.fmt = HDF_LEFT | HDF_STRING;
            21    }

            22
            23    pHdrCtrl->SetItem(nItem, &hdi);
            24}
            通過HDITEM的iImage參數(shù)即可決定選擇第幾個圖片(圖片的順序按照m_ImageList.Create(IDB_SORT , 16 , 1 , RGB(255 , 255 , 255));
            中的16像素點(diǎn)來決定)。

            posted on 2007-07-17 17:57 迷宮の未來 閱讀(1836) 評論(2)  編輯 收藏 引用

            評論

            # re: ListCtrl排序操作心得 2008-01-23 17:40 lxq

            這兩天也在弄ListCtrl排序,看到你的文章之后心有體會,非常感謝!  回復(fù)  更多評論   

            # re: ListCtrl排序操作心得 2012-07-10 08:12 hhhh63

            非常感謝,不過實際用時發(fā)現(xiàn)一個問題,有時出現(xiàn)寫入內(nèi)存錯誤,程序崩潰,仔細(xì)研究發(fā)現(xiàn)pHdrCtrl->GetItem(nItem, &hdi);之前應(yīng)該初始化 hdi,詳見http://blog.csdn.net/hhhh63/article/details/7729512  回復(fù)  更多評論   


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2014年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(10)

            隨筆檔案

            文章檔案

            最新隨筆

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲国产成人久久精品99| 亚洲国产精品无码久久一线| 亚洲伊人久久精品影院| 久久嫩草影院免费看夜色| 色综合合久久天天综合绕视看 | 久久天天日天天操综合伊人av| 97久久超碰国产精品旧版| 久久综合综合久久综合| 亚洲第一极品精品无码久久| 久久亚洲精品成人无码网站| 少妇熟女久久综合网色欲| 久久久久久久精品妇女99| 亚洲精品无码久久久久| 久久亚洲AV成人出白浆无码国产| 久久久久99精品成人片欧美| 国产成人无码久久久精品一| 精品久久久久久亚洲精品| 久久国产精品99精品国产987| av无码久久久久不卡免费网站| 99久久精品毛片免费播放| 久久电影网一区| 久久综合久久性久99毛片| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 99久久国产宗和精品1上映| 色8久久人人97超碰香蕉987| 国产一级持黄大片99久久| 久久精品国产精品亚洲人人 | 亚洲?V乱码久久精品蜜桃| 狠狠色婷婷久久一区二区| 欧美黑人激情性久久| 成人精品一区二区久久久| 久久婷婷是五月综合色狠狠| 久久久一本精品99久久精品66| yellow中文字幕久久网| 伊人色综合久久天天人守人婷| 亚洲午夜无码久久久久| 久久综合综合久久97色| 久久亚洲AV成人无码软件| 99久久99久久久精品齐齐| 久久亚洲中文字幕精品一区四| 一本色道久久综合狠狠躁 |