void CMyListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
nSortItem = pNMListView->iSubItem;
SortItems(MyCompareProc,(DWORD)this); *pResult = 0;
}int CALLBACK CMyListCtrl::MyCompareProc(LPARAM lParam1,LPARAM lParam2,
LPARAM lParamSort)
{
CMyListCtrl* pListCtrl = (CMyListCtrl*)lParamSort;
ASSERT( pListCtrl->IsKindOf( RUNTIME_CLASS( CListCtrl ) ) );
CString strItem1 = pListCtrl->GetItemText(lParam1,pListCtrl->nSortItem);
CString strItem2 = pListCtrl->GetItemText(lParam2,pListCtrl->nSortItem); return strcmp(strItem1,strItem2);
}结果后来通过跟踪,发现strItem1和strItem2居然是同一个值,后来进而发现,lParam1和lParam2居然都为0,不知道什么原因
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
nSortItem = pNMListView->iSubItem;
SortItems(MyCompareProc,(DWORD)this); *pResult = 0;
}int CALLBACK CMyListCtrl::MyCompareProc(LPARAM lParam1,LPARAM lParam2,
LPARAM lParamSort)
{
CMyListCtrl* pListCtrl = (CMyListCtrl*)lParamSort;
ASSERT( pListCtrl->IsKindOf( RUNTIME_CLASS( CListCtrl ) ) );
CString strItem1 = pListCtrl->GetItemText(lParam1,pListCtrl->nSortItem);
CString strItem2 = pListCtrl->GetItemText(lParam2,pListCtrl->nSortItem); return strcmp(strItem1,strItem2);
}结果后来通过跟踪,发现strItem1和strItem2居然是同一个值,后来进而发现,lParam1和lParam2居然都为0,不知道什么原因
解决方案 »
- _RecordsetPtr ACCESS 数据插入
- WINPE里面使用WNetAddConnection2报1312Error
- CreateFileMapping 的几个问题
- MoveToEX
- 如何得到Recordset中符合条件的记录数
- 问题:我的问题出在我自己写的cBlur模块中,它不能正常工作,请熟练VC++的朋友一定帮忙改改
- 关于SetCursor和热键的问题
- 如何显示进度?
- 各位帮帮忙。女朋友要考注册,有道题目不会,请帮忙解答。
- DirectPlay如何编写不同局域网之间的计算机通过互联网通信的程序呢?是自动识别局域网中的某台机子吗?20分
- 结构体初始化的问题。
- 图像显示平面的格式问题,参与者均有分
The lParam1 and lParam2 parameters specify the item data for the two items being compared. The lParamSort parameter is the same as the dwData value.
也就是说lParam1和lParam2传递的不是行号,而是你在加入每个新的Item时给它绑定的值
CListCtrl::SetItemData
BOOL SetItemData( int nItem, DWORD dwData );
也就是上面的哪个dwData参数
如果你在加入新的Item时没有调用SetItemData绑定值,估计哪个值默认会为0
这也就是你得出来的两个值都为0的原因。
void CMyListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
nSortItem = pNMListView->iSubItem;
for (int i = 0; i < GetItemCount(); i++)
{
SetItemData(i, i);
}
SortItems(MyCompareProc,(DWORD)this); *pResult = 0;
}
int CALLBACK CMyListCtrl::MyCompareProc(LPARAM lParam1,LPARAM lParam2,
LPARAM lParamSort)
{
CMyListCtrl* pListCtrl = (CMyListCtrl*)lParamSort;
ASSERT( pListCtrl->IsKindOf( RUNTIME_CLASS( CListCtrl ) ) );
CString strItem1 = pListCtrl->GetItemText((int)lParam1,
pListCtrl->nSortItem);
CString strItem2 = pListCtrl->GetItemText((int)lParam2,
pListCtrl->nSortItem); return strcmp(strItem1,strItem2);
}