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

📄 myalview.cpp

📁 一个非常简单地址簿程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MyALView.cpp : implementation of the CMyALView class
//

#include "stdafx.h"
#include "MyAL.h"

#include "MyALDoc.h"
#include "MyALView.h"
//#include "FindDlg.h"

#include "BaseInfoSet.h"
#include "FamilySet.h"
#include "UnitSet.h"
#include "ContactSet.h"
#include "OtherSet.h"
#include "ActiveSet.h"
#include "RemarkSet.h"

#include "Details.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMyALView

IMPLEMENT_DYNCREATE(CMyALView, CMultiColumnSortListView)

BEGIN_MESSAGE_MAP(CMyALView, CMultiColumnSortListView)
	//{{AFX_MSG_MAP(CMyALView)
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(ID_ADDNEW, OnAddnew)
	ON_COMMAND(ID_DEL, OnDel)
	ON_COMMAND(ID_MODIFY, OnModify)
	ON_UPDATE_COMMAND_UI(ID_MODIFY, OnUpdateModify)
	ON_UPDATE_COMMAND_UI(ID_DEL, OnUpdateDel)
	ON_WM_LBUTTONDBLCLK()
	ON_COMMAND(ID_FIND, OnFind)
	ON_COMMAND(ID_DISPLAYPART, OnDisplaypart)
	ON_COMMAND(ID_BROWER, OnBrower)
	ON_UPDATE_COMMAND_UI(ID_DISPLAYPART, OnUpdateDisplaypart)
	ON_COMMAND(ID_SORTID, OnSortid)
	ON_UPDATE_COMMAND_UI(ID_SORTID, OnUpdateSortid)
	ON_COMMAND(ID_SORTNAME, OnSortname)
	ON_UPDATE_COMMAND_UI(ID_SORTNAME, OnUpdateSortname)
	ON_COMMAND(ID_COTACT_TEL, OnCotactTel)
	ON_UPDATE_COMMAND_UI(ID_COTACT_TEL, OnUpdateCotactTel)
	ON_COMMAND(ID_FAMILY_TEL, OnFamilyTel)
	ON_UPDATE_COMMAND_UI(ID_FAMILY_TEL, OnUpdateFamilyTel)
	ON_COMMAND(ID_UNIT_TEL, OnUnitTel)
	ON_UPDATE_COMMAND_UI(ID_UNIT_TEL, OnUpdateUnitTel)
	ON_COMMAND(ID_HANDSET, OnHandset)
	ON_UPDATE_COMMAND_UI(ID_HANDSET, OnUpdateHandset)
	ON_COMMAND(ID_EMAIL, OnEmail)
	ON_UPDATE_COMMAND_UI(ID_EMAIL, OnUpdateEmail)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CMultiColumnSortListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CMultiColumnSortListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CMultiColumnSortListView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyALView construction/destruction

CMyALView::CMyALView()
{
	m_pFindDlg = NULL;
	m_nSortState = -1;
}

CMyALView::~CMyALView()
{
}

BOOL CMyALView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CMultiColumnSortListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyALView drawing

void CMyALView::OnDraw(CDC* pDC)
{
	CMyALDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

void CMyALView::OnInitialUpdate()
{
	CMultiColumnSortListView::OnInitialUpdate();
	
	CListCtrl &ListCtrl = GetListCtrl();
	
	LONG lStyle;
	lStyle=GetWindowLong(ListCtrl.m_hWnd,GWL_STYLE);
	lStyle&=~LVS_TYPEMASK;
	lStyle|=LVS_REPORT;
	SetWindowLong(ListCtrl.m_hWnd,GWL_STYLE,lStyle);
	ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
	
	LVCOLUMN lvcol;	
	lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
	lvcol.fmt=LVCFMT_LEFT;
	
	int i=0;
	
	//ID
	lvcol.pszText=_T("ID");
	lvcol.iSubItem=i;
	lvcol.cx=50;
	ListCtrl.InsertColumn(i++,&lvcol);

	//姓名
	lvcol.pszText=_T("姓名");
	lvcol.iSubItem=i;
	lvcol.cx=100;
	ListCtrl.InsertColumn(i++,&lvcol);
	
	//联系电话
	lvcol.pszText=_T("联系电话");
	lvcol.iSubItem=i;
	lvcol.cx=100;
	ListCtrl.InsertColumn(i++,&lvcol);

	//家庭电话
	lvcol.pszText=_T("家庭电话");
	lvcol.iSubItem=i;
	lvcol.cx=100;
	ListCtrl.InsertColumn(i++,&lvcol);

	//单位电话
	lvcol.pszText=_T("单位电话");
	lvcol.iSubItem=i;
	lvcol.cx=100;
	ListCtrl.InsertColumn(i++,&lvcol);
	
	//移动电话
	lvcol.pszText=_T("移动电话");
	lvcol.iSubItem=i;
	lvcol.cx=100;
	ListCtrl.InsertColumn(i++,&lvcol);
	
	//Email
	lvcol.pszText=_T("电子邮件");
	lvcol.iSubItem=i;
	lvcol.cx=100;
	ListCtrl.InsertColumn(i++,&lvcol);

	DisplayAllRecord();
/*	SetItemSortState(m_nSortState, ASCENDING);
	OnSortid();*/
}

/////////////////////////////////////////////////////////////////////////////
// CMyALView printing

BOOL CMyALView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyALView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyALView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyALView diagnostics

#ifdef _DEBUG
void CMyALView::AssertValid() const
{
	CMultiColumnSortListView::AssertValid();
}

void CMyALView::Dump(CDumpContext& dc) const
{
	CMultiColumnSortListView::Dump(dc);
}

CMyALDoc* CMyALView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyALDoc)));
	return (CMyALDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyALView message handlers
void CMyALView::DisplayAllRecord()
{
	CMyALDoc* pDoc = GetDocument();
	
	if(pDoc->m_pBaseInfoSet->IsOpen())
		pDoc->m_pBaseInfoSet->Close();
	pDoc->m_pBaseInfoSet->Open();
	
	if(pDoc->m_pFamilySet->IsOpen())
		pDoc->m_pFamilySet->Close();
	pDoc->m_pFamilySet->Open();

	if(pDoc->m_pUnitSet->IsOpen())
		pDoc->m_pUnitSet->Close();
	pDoc->m_pUnitSet->Open();

	if(pDoc->m_pContactSet->IsOpen())
		pDoc->m_pContactSet->Close();
	pDoc->m_pContactSet->Open();

	if(!(pDoc->m_pBaseInfoSet->IsBOF()&&pDoc->m_pBaseInfoSet->IsEOF()))
	{
		DisplayRecord();
		pDoc->m_pBaseInfoSet->MoveNext();
		pDoc->m_pFamilySet->MoveNext();
		pDoc->m_pUnitSet->MoveNext();
		pDoc->m_pContactSet->MoveNext();
		while(!pDoc->m_pBaseInfoSet->IsEOF())
		{
			DisplayRecord();
			pDoc->m_pBaseInfoSet->MoveNext();
			pDoc->m_pFamilySet->MoveNext();
			pDoc->m_pUnitSet->MoveNext();
			pDoc->m_pContactSet->MoveNext();
		}
	}
	
	pDoc->m_pBaseInfoSet->Close();
	pDoc->m_pFamilySet->Close();
	pDoc->m_pUnitSet->Close();
	pDoc->m_pContactSet->Close();
}

void CMyALView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CMultiColumnSortListView::OnLButtonDown(nFlags, point);
}

BOOL CMyALView::DisplayRecord()
{
	CMyALDoc* pDoc = GetDocument();
	CListCtrl &ListCtrl = GetListCtrl();

	int nPos = ListCtrl.GetItemCount();
	
	char pID[255];
	ltoa(pDoc->m_pBaseInfoSet->m_ID,pID,10);
	ListCtrl.InsertItem(nPos,pID);
	
	ListCtrl.SetItemText(nPos,1,pDoc->m_pBaseInfoSet->m_Name);
	ListCtrl.SetItemText(nPos,2,pDoc->m_pContactSet->m_Telephone);
	ListCtrl.SetItemText(nPos,3,pDoc->m_pFamilySet->m_Telephone);
	ListCtrl.SetItemText(nPos,4,pDoc->m_pUnitSet->m_Telephone);
	ListCtrl.SetItemText(nPos,5,pDoc->m_pContactSet->m_Handset);
	ListCtrl.SetItemText(nPos,6,pDoc->m_pContactSet->m_Email);

	return TRUE;
}

void CMyALView::UpDateView(int i)
{
	CListCtrl &ListCtrl = GetListCtrl();
	CMyALDoc* pDoc = GetDocument();
	
	ListCtrl.SetItemText(i,1,pDoc->m_pBaseInfoSet->m_Name);
	ListCtrl.SetItemText(i,2,pDoc->m_pContactSet->m_Telephone);
	ListCtrl.SetItemText(i,3,pDoc->m_pFamilySet->m_Telephone);
	ListCtrl.SetItemText(i,4,pDoc->m_pUnitSet->m_Telephone);
	ListCtrl.SetItemText(i,5,pDoc->m_pContactSet->m_Handset);
	ListCtrl.SetItemText(i,6,pDoc->m_pContactSet->m_Email);
}

void CMyALView::OnAddnew() 
{
	CMyALDoc* pDoc = GetDocument();
	
	if(pDoc->Addnew())
		DisplayRecord();
}

void CMyALView::OnDel() 
{
	if(MessageBox("真的要删除该记录吗?","警告",MB_ICONASTERISK|MB_YESNO)==IDYES)
	{
		CListCtrl &ListCtrl = GetListCtrl();
		
		int i,nState;
		int nItemSelected = ListCtrl.GetSelectedCount();
		int nItemCount = ListCtrl.GetItemCount();	
		if(nItemSelected<1) return;
		
		CString strID;
		for(i=0;i<nItemCount;i++)
		{	
			nState=ListCtrl.GetItemState(i,LVIS_SELECTED);	
			if(nState!=0) 
			{
				strID = ListCtrl.GetItemText(i,0);
				ListCtrl.DeleteItem(i);
				break;
			}
		}
		
		int nLen = strID.GetLength();
		LPCSTR lpszBuf = strID.GetBuffer(nLen);
		long lID = atol(lpszBuf);
		
		CMyALDoc* pDoc = GetDocument();
		pDoc->DelRecord(lID);
	}
}

void CMyALView::OnUpdateDel(CCmdUI* pCmdUI) 
{
	CListCtrl &ListCtrl = GetListCtrl();
	int nItemSelected = ListCtrl.GetSelectedCount();

	pCmdUI->Enable(nItemSelected>0);
}

void CMyALView::OnModify() 
{
	BeginWaitCursor();
	CListCtrl &ListCtrl = GetListCtrl();
	
	int i,nState;
	int nItemSelected = ListCtrl.GetSelectedCount();
	int nItemCount = ListCtrl.GetItemCount();	
	if(nItemSelected<1) return;
	
	CString strID;
	for(i=0;i<nItemCount;i++)
	{	
		nState=ListCtrl.GetItemState(i,LVIS_SELECTED);	
		if(nState!=0) 
		{
			strID = ListCtrl.GetItemText(i,0);
			break;
		}
	}
	
	int nLen = strID.GetLength();
	LPCSTR lpszBuf = strID.GetBuffer(nLen);
	long lID = atol(lpszBuf);

	TRACE("%ld\n",lID);
	CMyALDoc* pDoc = GetDocument();
	
	if(pDoc->Modify(lID))
		UpDateView(i);
}

void CMyALView::OnUpdateModify(CCmdUI* pCmdUI) 
{
	CListCtrl &ListCtrl = GetListCtrl();
	int nItemSelected = ListCtrl.GetSelectedCount();

	pCmdUI->Enable(nItemSelected>0);
}


void CMyALView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	CMultiColumnSortListView::OnLButtonDblClk(nFlags, point);
	BeginWaitCursor();
	CListCtrl &ListCtrl = GetListCtrl();
	
	int i,nState;
	int nItemSelected = ListCtrl.GetSelectedCount();
	int nItemCount = ListCtrl.GetItemCount();	
	if(nItemSelected<1) return;

⌨️ 快捷键说明

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