?? mylistctrl.cpp
字號:
// MyListCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "MyListCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyListCtrl
CMyListCtrl::CMyListCtrl()
{
m_bSortMode=FALSE;
m_bEnableSort=FALSE;
}
CMyListCtrl::~CMyListCtrl()
{
}
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CMyListCtrl)
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyListCtrl message handlers
int CALLBACK CMyListCtrl::MyCompareProcStrD(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CMyListCtrl* pListCtrl = (CMyListCtrl*)lParamSort;
//ASSERT( pListCtrl->IsKindOf( RUNTIME_CLASS( CMyListCtrl ) ) );
CString strItem1 = pListCtrl->GetItemText((int)lParam1,pListCtrl->nSortItem);
CString strItem2 = pListCtrl->GetItemText((int)lParam2,pListCtrl->nSortItem);
return strcmp(strItem1,strItem2);
}
int CALLBACK CMyListCtrl::MyCompareProcStrA(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CMyListCtrl* pListCtrl = (CMyListCtrl*)lParamSort;
//ASSERT( pListCtrl->IsKindOf( RUNTIME_CLASS( CMyListCtrl ) ) );
CString strItem1 = pListCtrl->GetItemText((int)lParam1,pListCtrl->nSortItem);
CString strItem2 = pListCtrl->GetItemText((int)lParam2,pListCtrl->nSortItem);
return strcmp(strItem1,strItem2)*-1;
}
int CALLBACK CMyListCtrl::MyCompareProcNumD(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CMyListCtrl* pListCtrl = (CMyListCtrl*)lParamSort;
//ASSERT( pListCtrl->IsKindOf( RUNTIME_CLASS( CMyListCtrl ) ) );
CString strItem1 = pListCtrl->GetItemText((int)lParam1,pListCtrl->nSortItem);
CString strItem2 = pListCtrl->GetItemText((int)lParam2,pListCtrl->nSortItem);
double numItem1,numItem2;
numItem1=atof(strItem1);
numItem2=atof(strItem2);
if(numItem1-numItem2>0.0)
return 1;
else
return -1;
}
int CALLBACK CMyListCtrl::MyCompareProcNumA(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
CMyListCtrl* pListCtrl = (CMyListCtrl*)lParamSort;
//ASSERT( pListCtrl->IsKindOf( RUNTIME_CLASS( CMyListCtrl ) ) );
CString strItem1 = pListCtrl->GetItemText((int)lParam1,pListCtrl->nSortItem);
CString strItem2 = pListCtrl->GetItemText((int)lParam2,pListCtrl->nSortItem);
double numItem1,numItem2;
numItem1=atof(strItem1);
numItem2=atof(strItem2);
if(numItem1-numItem2>=0.0)
return -1;
else
return 1;
}
void CMyListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(!m_bEnableSort)
{
*pResult = 0;
return;
}
////////
if( pNMListView->iSubItem == nSortItem )
m_bSortMode = !m_bSortMode;
else
{
m_bSortMode = !m_bSortMode;
nSortItem = pNMListView->iSubItem;
}
int count;
count=GetItemCount();
for (int i = 0; i < count; i++)
{
SetItemData(i, i);
}
CString strType;
strType=m_ColType.GetAt(nSortItem);
//AfxMessageBox(strType);
BeginWaitCursor();
if(strType=="4")//數(shù)字
{
if(m_bSortMode)
SortItems(MyCompareProcNumD,(DWORD)this);
else
SortItems(MyCompareProcNumA,(DWORD)this);
}
else//按字符處理
{
if(m_bSortMode)
SortItems(MyCompareProcStrD,(DWORD)this);
else
SortItems(MyCompareProcStrA,(DWORD)this);
}
EndWaitCursor();
/////////
*pResult = 0;
}
void CMyListCtrl::EnableSort(BOOL bSort)
{
m_bEnableSort=bSort;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -