- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
SortColumn.cpp
资源名称:ISQL_src.zip [点击查看]
上传用户:jsxglz
上传日期:2007-01-03
资源大小:117k
文件大小:4k
源码类别:
SQL Server
开发平台:
Visual C++
- // CSortColumn.cpp: implementation of the CSortColumn class.
- //
- #include "stdafx.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
- //////////////////////////////////////////////////////////////////////
- // CSortColumn
- CSortColumn::CSortColumn()
- {
- ASSERT(FALSE); // use the other one
- }
- CSortColumn::CSortColumn(CListCtrl* pWnd, const int& nCol, const bool& bIsNumeric)
- {
- m_nCol = nCol;
- m_pWnd = pWnd;
- m_bIsNumeric = bIsNumeric;
- ASSERT(m_pWnd);
- int nMax = m_pWnd->GetItemCount();
- DWORD dwData;
- CString sTxt;
- if(m_bIsNumeric)
- {
- for(int n = 0; n < nMax; n++)
- {
- dwData = m_pWnd->GetItemData(n);
- sTxt = m_pWnd->GetItemText(n, m_nCol);
- m_pWnd->SetItemData(n, (DWORD)new CSortItemInt(dwData, sTxt));
- }
- }
- else
- {
- for(int n = 0; n < nMax; n++)
- {
- dwData = m_pWnd->GetItemData(n);
- sTxt = m_pWnd->GetItemText(n, m_nCol);
- m_pWnd->SetItemData(n, (DWORD)new CSortItemText(dwData, sTxt));
- }
- }
- }
- CSortColumn::~CSortColumn()
- {
- ASSERT(m_pWnd);
- int nMax = m_pWnd->GetItemCount();
- if(m_bIsNumeric)
- {
- CSortItemInt* pItem;
- for(int n = 0; n < nMax; n++)
- {
- pItem = (CSortItemInt*)m_pWnd->GetItemData(n);
- ASSERT(pItem);
- m_pWnd->SetItemData(n, pItem->m_dwData);
- delete pItem;
- }
- }
- else
- {
- CSortItemText* pItem;
- for(int n = 0; n < nMax; n++)
- {
- pItem = (CSortItemText*)m_pWnd->GetItemData(n);
- ASSERT(pItem);
- m_pWnd->SetItemData(n, pItem->m_dwData);
- delete pItem;
- }
- }
- }
- void CSortColumn::Sort(const bool& bAsc)
- {
- if(m_bIsNumeric)
- {
- if(bAsc)
- m_pWnd->SortItems(CompareAscInt, 0L);
- else
- m_pWnd->SortItems(CompareDesInt, 0L);
- }
- else
- {
- if(bAsc)
- m_pWnd->SortItems(CompareAscText, 0L);
- else
- m_pWnd->SortItems(CompareDesText, 0L);
- }
- }
- int CALLBACK CSortColumn::CompareAscText(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
- {
- CSortItemText* pItem1 = (CSortItemText*)lParam1;
- CSortItemText* pItem2 = (CSortItemText*)lParam2;
- ASSERT(pItem1 && pItem2);
- return pItem1->m_strTxt.CompareNoCase(pItem2->m_strTxt);
- }
- int CALLBACK CSortColumn::CompareDesText(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
- {
- CSortItemText* pItem1 = (CSortItemText*)lParam1;
- CSortItemText* pItem2 = (CSortItemText*)lParam2;
- ASSERT(pItem1 && pItem2);
- return pItem2->m_strTxt.CompareNoCase(pItem1->m_strTxt);
- }
- int CALLBACK CSortColumn::CompareAscInt(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
- {
- CSortItemInt* pItem1 = (CSortItemInt*)lParam1;
- CSortItemInt* pItem2 = (CSortItemInt*)lParam2;
- ASSERT(pItem1 && pItem2);
- if(pItem1->m_nInt == pItem2->m_nInt)
- return 0;
- return pItem1->m_nInt > pItem2->m_nInt ? 1 : -1;
- }
- int CALLBACK CSortColumn::CompareDesInt(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
- {
- CSortItemInt* pItem1 = (CSortItemInt*)lParam1;
- CSortItemInt* pItem2 = (CSortItemInt*)lParam2;
- ASSERT(pItem1 && pItem2);
- if(pItem1->m_nInt == pItem2->m_nInt)
- return 0;
- return pItem1->m_nInt < pItem2->m_nInt ? 1 : -1;
- }
- //////////////////////////////////////////////////////////////////////
- // CSortItemText
- CSortItemText::CSortItemText()
- {
- ASSERT(FALSE); // use the other one
- }
- CSortItemText::CSortItemText(const DWORD& dwData, const CString& sTxt)
- {
- m_dwData = dwData;
- m_strTxt = sTxt;
- }
- CSortItemText::~CSortItemText()
- {
- }
- //////////////////////////////////////////////////////////////////////
- // CSortItemInt
- CSortItemInt::CSortItemInt()
- {
- ASSERT(FALSE); // use the other one
- }
- CSortItemInt::CSortItemInt(const DWORD& dwData, const CString& sTxt)
- {
- m_dwData = dwData;
- m_nInt = atoi(sTxt);
- }
- CSortItemInt::~CSortItemInt()
- {
- }