91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-23
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: MFC??ListView??

資源簡(jiǎn)介

MFC. 1. 自定義CMyListView,繼承自CListView, 實(shí)現(xiàn)點(diǎn)擊表頭進(jìn)行該列排序以及固定某些列寬的功能。使用時(shí)直接繼承此View即可。 2. 自定義CMyListCtrl, 繼承自CMFCListCtrl, 同樣實(shí)現(xiàn)上述功能,用于listctrl控件。使用時(shí),將控件的control變量更改為CMyListCtrl即可。

資源截圖

代碼片段和文件信息

#include?“MyListView.h“





IMPLEMENT_DYNCREATE(CMyListView?CListView)

BEGIN_MESSAGE_MAP(CMyListView?CListView)
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK?OnColumnClick)//1011?afx_idw_pane_first?
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
//?CView3?construction/destruction

CMyListView::CMyListView()
{
//?TODO:?add?construction?code?here
m_nCurSortCol?=?-1;
}

CMyListView::~CMyListView()
{
m_vFrozenCols.clear();
}

BOOL?CMyListView::PreCreateWindow(CREATESTRUCT&?cs)
{
//?用LVS_SORTDESCENDING時(shí)注意,?插入數(shù)據(jù)時(shí)需根據(jù)insertitem返回插入n列
cs.style?|=?LVS_REPORT?|?LVS_SHOWSELALWAYS?;//?|?LVS_SORTDESCENDING;
return?CListView::PreCreateWindow(cs);
}

//1016?固定列
BOOL?CMyListView::OnNotify(WPARAM?wParam?LPARAM?lParam?LRESULT*?pResult)
{
int?len?=?m_vFrozenCols.size();
if(len?>?0)
{
HD_NOTIFY*?pHDN?=?(HD_NOTIFY*)lParam;
switch(((NMHDR*)lParam)->code)
{
case?HDN_BEGINTRACKW:
case?HDN_BEGINTRACKA:
case?HDN_DIVIDERDBLCLICKA:
case?HDN_DIVIDERDBLCLICKW:
for(int?i=0;?i {
if(pHDN->iItem?==?m_vFrozenCols[i])?//如果拖動(dòng)的列是設(shè)定固定列寬的列之一
{
*pResult?=?TRUE;
return?TRUE;
}
}
}

}
return?CListView::OnNotify(wParam?lParam?pResult);
}

void?CMyListView::FreezeColumn(int?col)
{
m_vFrozenCols.push_back(col);
}

/////////////////////////////////////////////////////////////////////////////


//1011?排序
int?CALLBACK?CMyListView::ListViewCompareFunc(LPARAM?lParam1?LPARAM?lParam2?LPARAM?lParamSort)
{
int?*pisortorder?=?(int*)lParamSort;//得到排序方式
TCHAR?*sz1?=?(TCHAR*)lParam1;
TCHAR?*sz2?=?(TCHAR*)lParam2;//得到兩個(gè)列的排序信息
if(*pisortorder?==?LVS_SORTASCENDING)
return?lstrcmp(sz1?sz2);
else
return?lstrcmp(sz1?sz2)?*?(-1);
}

int?CALLBACK?CMyListView::ListViewCompareIntFunc(LPARAM?lParam1?LPARAM?lParam2?LPARAM?lParamSort)
{
int?*pisortorder?=?(int*)lParamSort;//得到排序方式
TCHAR?*sz1?=?(TCHAR*)lParam1;
TCHAR?*sz2?=?(TCHAR*)lParam2;//得到兩個(gè)列的排序信息
int?n1?=?_ttoi(sz1);//??不用單獨(dú)提出int
int?n2?=?_ttoi(sz2);

if(*pisortorder?==?LVS_SORTASCENDING)
{
if(n1?-?n2?>?0)?return?1;
else?if(n1?-?n2?==?0)?return?0;
else?return?-1;
}
else
{
if(n1?-?n2?>?0)?return?-1;
else?if(n1?-?n2?==?0)?return?0;
else?return?1;
}
}

void?CMyListView::CallSort(int?nSortCol?BOOL?dftOrder)
{
CListCtrl*?rList?=?&GetListCtrl();

LONG?ws?=?GetWindowLong(rList->m_hWnd?GWL_style);
int?nSortOrder;

//若采用默認(rèn)排序,用當(dāng)前順序//降序
//若點(diǎn)擊列與當(dāng)前排序列不同,則改變排序,?降序
//若相同,?更改增減序的排序方式.?

//若點(diǎn)擊列與當(dāng)前排序列不同,則改變排序,?降序
//若點(diǎn)擊列與當(dāng)前列相同,若True,排序不變,?false,改變
if(m_nCurSortCol?!=?nSortCol)
{
// ws?^=?LVS_SORTASCENDING;
ws?&=?~LVS_SORTASCENDING;

nSortOrder?=?LVS_SORTDESCENDING;
m_nCurSortCol?=?nSortCol;
}
else
{
if(ws?&?LVS_SORTASCENDING)
{
if(!dftOrder)
{
//ws?^=?LVS_SORTASCENDING;
ws?&=?~LVS_SORTASCENDING;
nSortOrder?=?LVS_SORTDESCENDING;
}
else
{
nSor

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????5702??2013-10-21?14:37??MyListView.cpp

?????文件???????1566??2013-10-21?14:38??MyListView.h

-----------?---------??----------?-----??----

?????????????????7268????????????????????2


評(píng)論

共有 條評(píng)論