⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roomlistview.cpp

📁 一个简单的视频会议VC++MFC工程文件
💻 CPP
字号:
// RoomListView.cpp : implementation file
//

#include "stdafx.h"
#include "VISMCU.h"
#include "RoomListView.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRoomListView

IMPLEMENT_DYNCREATE(CRoomListView, CListView)

CRoomListView::CRoomListView()
{
}

CRoomListView::~CRoomListView()
{
}


BEGIN_MESSAGE_MAP(CRoomListView, CListView)
	//{{AFX_MSG_MAP(CRoomListView)
	ON_WM_CREATE()
	ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnItemchanged)
	//}}AFX_MSG_MAP
	ON_NOTIFY(HDN_ITEMCLICK,0,OnHeaderItemclick)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRoomListView drawing

void CRoomListView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CRoomListView diagnostics

#ifdef _DEBUG
void CRoomListView::AssertValid() const
{
	CListView::AssertValid();
}

void CRoomListView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRoomListView message handlers

int CRoomListView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	lpCreateStruct->style|=(LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS);
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	SetFont(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));
	CListCtrl &ctrl=GetListCtrl();
	ctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);

	ctrl.InsertColumn(0,"会议名",LVCFMT_LEFT,150);
	ctrl.InsertColumn(1,"人数",LVCFMT_LEFT,50);


	return 0;
}

void CRoomListView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	CMainFrame *main=(CMainFrame*)AfxGetMainWnd();
	ASSERT(main);
	main->RefreshMemberList();
	*pResult = 0;
}



void CRoomListView::OnHeaderItemclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	// TODO: Add your control notification handler code here
	CListCtrl &list=GetListCtrl();
	m_headerItem=phdn->iItem;
	list.SortItems(CompareFunc,(DWORD)this);
	HDITEM hdItem;
	hdItem.mask=HDI_LPARAM;
	list.GetHeaderCtrl()->GetItem(phdn->iItem,&hdItem);
	hdItem.lParam=hdItem.lParam>0?hdItem.lParam=0:hdItem.lParam=1;
	list.GetHeaderCtrl()->SetItem(phdn->iItem,&hdItem);
	*pResult = 0;
}
int CALLBACK CRoomListView::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParam)
{
	CRoomListView *view=(CRoomListView*)lParam;
	CListCtrl &list=view->GetListCtrl();

	HDITEM hdItem;
	hdItem.mask=HDI_LPARAM;
	list.GetHeaderCtrl()->GetItem(view->m_headerItem,&hdItem);
	LPARAM sort=hdItem.lParam;

	int index1,index2;

	LVFINDINFO lfi;
	lfi.flags=LVFI_PARAM;
	lfi.lParam=lParam1;
	index1=list.FindItem(&lfi);
	lfi.lParam=lParam2;
	index2=list.FindItem(&lfi);
	if(index1>=0&&index2>=0)
	{	
		CString txt1,txt2;
		txt1=list.GetItemText(index1,view->m_headerItem);
		txt2=list.GetItemText(index2,view->m_headerItem);
		return sort==0?txt1.Compare(txt2):-txt1.Compare(txt2);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -