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

📄 memberlistview.cpp

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

#include "stdafx.h"
#include "VISMCU.h"
#include "MemberListView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMemberListView

IMPLEMENT_DYNCREATE(CMemberListView, CListView)

CMemberListView::CMemberListView()
{

}

CMemberListView::~CMemberListView()
{
}


BEGIN_MESSAGE_MAP(CMemberListView, CListView)
	//{{AFX_MSG_MAP(CMemberListView)
	ON_WM_CREATE()
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)	
	//}}AFX_MSG_MAP
	ON_NOTIFY(HDN_ITEMCLICK,0, OnHeaderItemclick)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMemberListView drawing

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

/////////////////////////////////////////////////////////////////////////////
// CMemberListView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CMemberListView message handlers

int CMemberListView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	lpCreateStruct->style|=(LVS_REPORT|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,150);
	ctrl.InsertColumn(2,"终端类型",LVCFMT_LEFT,200);

	return 0;
}

void CMemberListView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	CMenu menu;

	POINT pt;
	GetCursorPos(&pt);
	
	menu.CreatePopupMenu();
	menu.AppendMenu(MF_STRING|(GetListCtrl().GetSelectedCount()>0?MF_ENABLED:MF_GRAYED)
		,ID_HANGUP,"挂断");
	menu.AppendMenu(MF_STRING|(GetListCtrl().GetSelectedCount()==1?MF_ENABLED:MF_GRAYED)
		,ID_MEMBER_DETAIL,"详细信息...");
	
	
	menu.TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON,pt.x,pt.y,AfxGetMainWnd());
	*pResult = 0;
}

void CMemberListView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	if(GetListCtrl().GetSelectedCount()==1)
		AfxGetMainWnd()->SendMessage(WM_COMMAND,ID_MEMBER_DETAIL);
	*pResult = 0;
}



void CMemberListView::OnHeaderItemclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;

	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 CMemberListView::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParam)
{
	CMemberListView *view=(CMemberListView*)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 + -