📄 memberlistview.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 + -