CListCtrl是一个MFC中的列表控件,用于显示一组数据项。用户可能希望根据某一列的值对这些项进行排序,这就需要实现排序功能。 2. 研究CListCtrl提供的排序功能或接口 CListCtrl提供了SortItems方法来实现排序功能。这个方法需要两个参数:一个是比较函数(回调函数)的指针,另一个是用户自定义的数据指针。 3. 编写排序比较...
第一和第二个参数为用于比较的两项的ItemData,你可以通过DWORD CListCtrl::GetItemData( int nItem )/ BOOL CListCtrl::SetItemData( int nItem, DWORD dwData )来对每一项的ItemData进行存取。 注意:回调函数只能为全局函数或是静态类成员函数 3.响应LVN_COLUMNCLICK事件,当单击控件头按钮时触发 二、正确代码: ...
首先,要让CListCtrl能响应点击Column header的操作,方法是响应对应的LVN_COLUMNCLICK消息,然后在对应的消息处理函数中执行自己的排序。其方法是调用CListCtrl 类中的成员函数SortItems()函数,不过在调用之前,依据msdn的指示,一定要对所有需要排序的行调用CListCtrl的 SetItemData(intnItem,DWORDdwData)函数,一般的设置方法为...
首先建立一个formview的单文档exe工程,名为SortA 然后, 在dialog中添加一个 clistctrl控件,改成report 添加该控件的影射变量为:m_list 然后在 sortAview.h的类定义前面添加如下代码: struct MyData ... { CListCtrl *listctrl; //CListCtrl控件指针 int isub; //l列号 int seq; //1为升序,0为降序 } ; /...
新建一个CListCtrl的派生(或继承,他妈的我也不清楚是哪个)类,声明如下: class SortCListCtrl : public CListCtrl { // Construction public: SortCListCtrl(); // Attributes public: BOOL m_fAsc; //是否顺序排序 int m_nSortedCol; //当前排序的列 ...
在CListCtrl上设置排序指示器是指在列表控件的列标题上显示一个排序的指示器,用于指示当前按照哪一列进行排序。当用户点击列标题时,可以根据点击的列来进行排序,并在该列标题上显示相应的排序指示器。 设置排序指示器的步骤如下: 首先,需要在列表控件的创建过程中设置相应的样式。在创建列表控件时,可以使用LVS_REPORT...
第一和第二个参数为用于比较的两项 的ItemData,你可以通过DWORD CListCtrl::GetItemData( int nItem )/BOOL CListCtrl::SetItemData( int nItem, DWORD dwData )来对每一项的ItemData进行存取。在添加项时选用特定的CListCtrl::InsertItem也可以设置该值。由于你在排序时只能通过该值 来确定项的位置...
CListCtrl*plist; intcol; };//回调函数第三个参数对应的数据结构,可以自定义,至少要包含这两项 boolfav=false;//排序方法(递增或递减) intCALLBACKMylistCompare(LPARAMlParam1,LPARAMlParam2,LPARAMlParamSort) {/*回调函数,第一二个参数是列表其中两项(行)相关联的32位值(通常是个指向某一结构的指针),第三...
1.CListCtrl 新建一个派生于CListCtrl类的类CSortList,并为此类添加两个变量。 boolm_fAsc;判断排序方法 intm_nSortedCol;判断排序列 2. m_fAsc=TRUE; 3.LVN_COLUMNCLICK. LVN_COLUMNCLICK事件为点击表头列所响应的事件。 为LVN_COLUMNCLICK事件添加以下代码(m_List为列表控件的CSortList型变量):...