ListCtrlEx.cpp
资源名称:视频会议系统.rar [点击查看]
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:3k
源码类别:
IP电话/视频会议
开发平台:
Visual C++
- // ListCtrlEx.cpp : implementation file
- //
- #include "stdafx.h"
- #include "ListCtrlEx.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #pragma comment( lib , "msimg32.lib" )
- /////////////////////////////////////////////////////////////////////////////
- // CListCtrlEx
- CListCtrlEx::CListCtrlEx()
- {
- }
- CListCtrlEx::~CListCtrlEx()
- {
- }
- BEGIN_MESSAGE_MAP(CListCtrlEx, CListCtrl)
- //{{AFX_MSG_MAP(CListCtrlEx)
- ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
- //}}AFX_MSG_MAP
- ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CListCtrlEx message handlers
- void CListCtrlEx::PreSubclassWindow()
- {
- this->SetTextBkColor( RGB( 214 , 239 , 255 ) );
- this->SetBkColor( RGB( 214 , 239 , 255 ) );
- this->header.SubclassDlgItem ( 0 , this );
- CListCtrl::PreSubclassWindow( );
- }
- void CListCtrlEx::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NMLVCUSTOMDRAW * pLVCD = ( NMLVCUSTOMDRAW * )pNMHDR;
- *pResult = CDRF_NEWFONT;
- if( pLVCD->nmcd.dwDrawStage == CDDS_PREPAINT )
- *pResult = CDRF_NOTIFYITEMDRAW;
- else if( pLVCD->nmcd.dwDrawStage == CDDS_ITEMPREPAINT )
- {
- int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );
- // 判断使ListCtrl不同颜色实现的条件
- CString str1 = this->GetItemText(nItem , 1 );
- if (str1 == "开会" || str1 == "是" )
- {
- pLVCD->clrTextBk = RGB(150 , 255 , 255 );
- pLVCD->clrText = RGB(12 , 26 , 234 );
- }
- *pResult = CDRF_DODEFAULT;
- }
- }
- void CListCtrlEx::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
- {
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- static int Param[ MAX_PATH ] = { ( int )this };
- Param[ 1 ] = pNMListView->iSubItem;
- Param[ 2 + Param[ 1 ] ] = !Param[ 2 + Param[ 1 ] ];
- this->SortItems( CListCtrlEx::CompareFunc , ( int )Param );
- *pResult = 0;
- }
- int CListCtrlEx::CompareFunc( LPARAM lParam1 , LPARAM lParam2 , LPARAM lParamSort )
- {
- int * p = ( int * )lParamSort;
- CListCtrlEx * pThis = ( CListCtrlEx * )p[ 0 ];
- LVFINDINFO info;
- memset( &info , 0 , sizeof( info ) );
- info.flags = LVFI_PARAM;
- info.lParam = lParam1;
- lParam1 = pThis->FindItem( &info );
- CString t1 = pThis->GetItemText(lParam1 , p[ 1 ] );
- info.lParam = lParam2;
- lParam2 = pThis->FindItem( &info );
- CString t2 = pThis->GetItemText(lParam2 , p[ 1 ] );
- return p[ 2 + p[ 1 ] ] ? t1 < t2 : t1 > t2;
- }
English
