//这是ListCtrl的onColumnclick事件
//m_ProjList是ListCtrl对象
//UINT m_nCmpIndex; //某个Column的Index,这列是进行排序的列
//int m_nSortFlag; //切换升序和降序,在1和-1之间切换
void CDemoDlg::OnColumnclickManaGcwjProjList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
//对第几个Column下的字段进行排序
m_nCmpIndex = pNMListView->iSubItem;
//在升序和降序之间切换
m_nSortFlag>0? m_nSortFlag = -1: m_nSortFlag = 1;
//排序,传递一个函数指针以及对话框的指针
m_ProjList.SortItems(CompareProc, (LPARAM)this);
//排序以后重新设置在InsertItem的时候传入LVITEM结构里的lParam参数
for (int i=0; i<m_ProjList.GetItemCount(); i++)
m_ProjList.SetItemData(i, i);
*pResult = 0;
}
//回调函数,用来比较两个Item的
int CALLBACK CDemoDlg::CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
//得到m_ProjList的指针
CListCtrl* pListCtrl = (CListCtrl*) (&((CGCWJManaDlg *)lParamSort)->m_ProjList);
CString strItem1 = pListCtrl->GetItemText(lParam1,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex);
CString strItem2 = pListCtrl->GetItemText(lParam2,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex); return strcmp(strItem2, strItem1)*(((CGCWJManaDlg *)lParamSort)->m_nSortFlag);
}
//m_ProjList是ListCtrl对象
//UINT m_nCmpIndex; //某个Column的Index,这列是进行排序的列
//int m_nSortFlag; //切换升序和降序,在1和-1之间切换
void CDemoDlg::OnColumnclickManaGcwjProjList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
//对第几个Column下的字段进行排序
m_nCmpIndex = pNMListView->iSubItem;
//在升序和降序之间切换
m_nSortFlag>0? m_nSortFlag = -1: m_nSortFlag = 1;
//排序,传递一个函数指针以及对话框的指针
m_ProjList.SortItems(CompareProc, (LPARAM)this);
//排序以后重新设置在InsertItem的时候传入LVITEM结构里的lParam参数
for (int i=0; i<m_ProjList.GetItemCount(); i++)
m_ProjList.SetItemData(i, i);
*pResult = 0;
}
//回调函数,用来比较两个Item的
int CALLBACK CDemoDlg::CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
//得到m_ProjList的指针
CListCtrl* pListCtrl = (CListCtrl*) (&((CGCWJManaDlg *)lParamSort)->m_ProjList);
CString strItem1 = pListCtrl->GetItemText(lParam1,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex);
CString strItem2 = pListCtrl->GetItemText(lParam2,
((CGCWJManaDlg *)lParamSort)->m_nCmpIndex); return strcmp(strItem2, strItem1)*(((CGCWJManaDlg *)lParamSort)->m_nSortFlag);
}
解决方案 »
- 菜单到底是不是窗口
- 如何使用mciSendString来播放音乐?
- CEdit文本框垂直居中
- 套接字函数与window类库,api的关系,以及它与网络协议实现的api之间的关系,谢谢!
- ISAPI如何判断文件类型
- GetSaveFileName的问题,如何使其弹出文件对话框时使用默认文件名。
- 怎样加另外一个.cpp和.h到一个已知的工程里
- vc中,输入对象后打个点后,为什么它的方法、属性不会自动弹出
- 大侠们,问一句,是不是真很少有人用VC做数据库开发?
- CreatProcess可以执行一个.exe外部程序,但怎么不能执行.chm已编译的html文件?怎样才能执行呢?
- 想做视频压缩应该如何进行没了头绪
- 我的richedit怎么实现不了多行的功能?
//m_ProjList是ListCtrl对象
//UINT m_nCmpIndex; //某个Column的Index,这列是进行排序的列
//int m_nSortFlag; //切换升序和降序,在1和-1之间切换
void CDemoDlg::OnColumnclickManaGcwjProjList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
//对第几个Column下的字段进行排序
m_nCmpIndex = pNMListView->iSubItem;
//在升序和降序之间切换
m_nSortFlag>0? m_nSortFlag = -1: m_nSortFlag = 1;
//排序,传递一个函数指针以及对话框的指针
m_ProjList.SortItems(CompareProc, (LPARAM)this);
//排序以后重新设置在InsertItem的时候传入LVITEM结构里的lParam参数
for (int i=0; i<m_ProjList.GetItemCount(); i++)
m_ProjList.SetItemData(i, i);
*pResult = 0;
}
//回调函数,用来比较两个Item的
int CALLBACK CDemoDlg::CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
//得到m_ProjList的指针
CListCtrl* pListCtrl = (CListCtrl*) (&((CDemoDlg *)lParamSort)->m_ProjList);
CString strItem1 = pListCtrl->GetItemText(lParam1,
((CDemoDlg *)lParamSort)->m_nCmpIndex);
CString strItem2 = pListCtrl->GetItemText(lParam2,
((CDemoDlg *)lParamSort)->m_nCmpIndex); return strcmp(strItem2, strItem1)*(((CDemoDlg *)lParamSort)->m_nSortFlag);
}