listview - yamaumima/hello.github.io GitHub Wiki


#include "stdafx.h"
#include "Sd.h"
#include "MainView.h"
#include "AddDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainView

IMPLEMENT_DYNCREATE(CMainView, CListView)

CMainView::CMainView():m_list(GetListCtrl())
{
}

CMainView::~CMainView()
{
}


BEGIN_MESSAGE_MAP(CMainView, CListView)
	//{{AFX_MSG_MAP(CMainView)
	ON_COMMAND(ID_EDIT_ADD, OnEditAdd)
	ON_COMMAND(ID_EDIT_DEL, OnEditDel)
	ON_COMMAND(ID_EDIT_MOD, OnEditMod)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainView drawing

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

/////////////////////////////////////////////////////////////////////////////
// CMainView diagnostics

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

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

/////////////////////////////////////////////////////////////////////////////
// CMainView message handlers

void CMainView::OnInitialUpdate() 
{//类似于对话框的OnInitDialog,在窗口未显示出来之前做初始化
	CListView::OnInitialUpdate();
	m_iList.Create(16,16,ILC_COLOR32|ILC_MASK ,8,8);
	int i = 0;
	while(i<5)
		m_iList.Add(AfxGetApp()->LoadIcon(IDI_ICON1+i++));
	m_list.SetImageList(&m_iList,LVSIL_SMALL);
	m_list.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS);
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES);
	m_list.InsertColumn(0,"工号",0,200);
	m_list.InsertColumn(1,"姓名",0,200);
	m_list.InsertColumn(2,"部门",0,200);
	
}

void CMainView::OnEditAdd() 
{
	CAddDlg dlg;
	if(IDCANCEL == dlg.DoModal())
		return;
	int i = m_list.GetItemCount();
	m_list.InsertItem(i,dlg.m_szNumb,i%5);
	m_list.SetItemText(i,1,dlg.m_szName);
	m_list.SetItemText(i,2,dlg.m_szDept);
}

void CMainView::OnEditDel() 
{
	if(!m_list.GetSelectedCount())
	{
		AfxMessageBox("请选中一条数据再删除!");
		return;
	}
	int nSel = m_list.GetSelectionMark();
	if(IDYES==AfxMessageBox("确定删除该记录吗?",MB_YESNO))
		m_list.DeleteItem(nSel);
}

void CMainView::OnEditMod() 
{
	if(!m_list.GetSelectedCount())
	{
		AfxMessageBox("请选中一条数据再修改!");
		return;
	}
	int nSel = m_list.GetSelectionMark();
	
	CAddDlg dlg;
	dlg.m_szNumb = m_list.GetItemText(nSel,0);
	dlg.m_szName = m_list.GetItemText(nSel,1);
	dlg.m_szDept= m_list.GetItemText(nSel,2);
	dlg.m_bModify = TRUE;
	if(IDCANCEL == dlg.DoModal())
		return;
	m_list.SetItemText(nSel,0,dlg.m_szNumb)	;
	m_list.SetItemText(nSel,1,dlg.m_szName );
	m_list.SetItemText(nSel,2,dlg.m_szDept)	;
	
}

void CMainView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnEditMod() ;
	*pResult = 0;
}

void CMainView::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{

}