列的排序不正确 ClistCtrl
Uncorrect sorting of columns ClistCtrl
这是我的回调函数:
int CALLBACK SortMeAscending(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
int nRetVal = 0;
PITEMDATA pData1 = (PITEMDATA)lParam1;
PITEMDATA pData2 = (PITEMDATA)lParam2;
switch(lParamSort)
{
case 0:
if(pData1->iSeq < pData2->iSeq)
nRetVal = -1;
else if(pData1->iSeq > pData2->iSeq)
nRetVal = 1;
else
nRetVal = 0;
break;
case 1:
nRetVal = lstrcmp(pData2->pszCueName, pData1->pszCueName);
break;
case 2:
nRetVal = lstrcmp(pData2->pszTags, pData1->pszTags);
break;
default:
break;
}
return nRetVal;
}
int CALLBACK SortMeDescending(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
int nRetVal = 0;
PITEMDATA pData1 = (PITEMDATA)lParam1;
PITEMDATA pData2 = (PITEMDATA)lParam2;
switch(lParamSort)
{
case 0:
if(pData1->iSeq > pData2->iSeq)
nRetVal = -1;
else if(pData1->iSeq < pData2->iSeq)
nRetVal = 1;
else
nRetVal = 0;
break;
case 1:
nRetVal = lstrcmp(pData1->pszCueName, pData2->pszCueName);
break;
case 2:
nRetVal = lstrcmp(pData1->pszTags, pData2->pszTags);
break;
default:
break;
}
return nRetVal;
}
这是我的OnCompareItems:
int CTest::OnCompareItems(LPARAM lParam1, LPARAM lParam2, int iColumn)
{
CMFCHeaderCtrl &headerCntrl = GetHeaderCtrl();
BOOL b = 0;
if(headerCntrl.IsAscending())
{
return SortItems(SortMeDescending, iColumn);
}
else
{
return SortItems(SortMeAscending, iColumn);
}
}
如果我关注这篇文章 http://support.microsoft.com/kb/250614我没有标题中的排序箭头。如果我使用您在上面看到的方法,我会在排序中出现一些差距。我点击它排序,下次它不会一次又一次地排序请帮助我
我认为您需要使用 CMFCHeaderCtrl::SetSortColumn 来设置列的排序顺序。 每次排序时。除此之外,应从HDN_ITEMCLICK处理程序调用实际的排序函数。
因此,假设您已指定以下内容:
ON_NOTIFY(HDN_ITEMCLICK, 0, OnItemclickList1)
在 OnItemclickList1 方法中,编写以下代码:
void CTest::OnItemclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLISTVIEW *pLV = (NMLISTVIEW *) pNMHDR;
CMFCHeaderCtrl &headerCntrl = GetHeaderCtrl();
BOOL b = 0;
if(headerCntrl.IsAscending())
{
headerCntrl.SetSortColumn(pLV->iItem, FALSE);
SortItems(SortMeDescending, pLV->iItem);
}
else
{
headerCntrl.SetSortColumn(pLV->iItem, TRUE);
SortItems(SortMeAscending, iColumn);
}
*pResult = 0;
}
并抛弃你的OnCompareItems
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 不正确的操作数类型 MSVC
- 数组填充了不正确的值
- 我是否不正确地集中了这些字符数组?
- 为什么除非我使用 cout,否则我的值不正确?
- 计算幂级数的数学结果不正确
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 列的排序不正确 ClistCtrl