扩展类

来源:互联网 发布:封lol端口 编辑:程序博客网 时间:2024/05/17 03:50
  

http://www.bathome.net/thread-4068-1-1.html

// SortListCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "SortListCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
struct stColor
{
 int nRow;
 int nCol;
 COLORREF rgb;
};
/////////////////////////////////////////////////////////////////////////////
// CSortListCtrl
IMPLEMENT_DYNAMIC(CSortListCtrl, CListCtrl)
CSortListCtrl::CSortListCtrl()
: m_nRowHeight(0)
, m_fontHeight(12)
, m_fontWith(0)
,m_bSortAscending( TRUE )
{  
 m_color = RGB(0,0,0);
 m_nIndex = 0;
 m_nSortColumn = -1;
}

CSortListCtrl::~CSortListCtrl()
{
}


BEGIN_MESSAGE_MAP(CSortListCtrl, CListCtrl)
 //{{AFX_MSG_MAP(CSortListCtrl)
  // NOTE - the ClassWizard will add and remove mapping macros here.
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSortListCtrl message handlers
int CSortListCtrl::FindByIndex(DWORD nIndex)
{
 for (int i = 0;i < GetItemCount();i++)
 {
  if (nIndex == GetItemData(i))
  {
   return i;
  }
 }
 return -1;
}

void CSortListCtrl::SetSortColumn(int nColumn)
{
 m_nSortColumn = nColumn;
}
int CSortListCtrl::GetSortColumn()
{
 return m_nSortColumn;
}

BOOL CSortListCtrl::SignatureItem(int nItem)
{
 return SetItemData(nItem,m_nIndex++);
}

int CALLBACK SortFunc(LPARAM lp1, LPARAM lp2, LPARAM lpSort)
{

 CSortListCtrl *pList = (CSortListCtrl *)lpSort;
 int nItem1,nItem2;
 nItem1 = pList->FindByIndex(lp1);
 nItem2 = pList->FindByIndex(lp2);

 CString str1 = pList->GetItemText(nItem1,pList->GetSortColumn());
 CString str2 = pList->GetItemText(nItem2,pList->GetSortColumn());
   
 return pList->m_bSortAscending ?str1.Compare(str2):str2.Compare(str1);
}

void CSortListCtrl::SetHeaderBKColor(int R, int G, int B, int Gradient)
{
 m_Header.m_R = R;
 m_Header.m_G = G;
 m_Header.m_B = B;
 m_Header.m_Gradient = Gradient;
}

原创粉丝点击