📄 memberview.cpp
字号:
// memberView.cpp : implementation of the CMemberView class
//
#include "stdafx.h"
#include "telephonebook.h"
#include "memberDoc.h"
#include "memberView.h"
#include "INSTRCTION.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMemberView
IMPLEMENT_DYNCREATE(CMemberView, CFormView)
BEGIN_MESSAGE_MAP(CMemberView, CFormView)
//{{AFX_MSG_MAP(CMemberView)
ON_BN_CLICKED(IDC_NEXT, OnNext)
ON_BN_CLICKED(IDC_PREV, OnPrev)
ON_COMMAND(ID_MEMBER_DELETE, OnMemberDel)
ON_UPDATE_COMMAND_UI(ID_MEMBER_DELETE, OnUpdateMemberDel)
ON_COMMAND(ID_MEMBER_END, OnMemberEnd)
ON_UPDATE_COMMAND_UI(ID_MEMBER_END, OnUpdateMemberEnd)
ON_COMMAND(ID_MEMBER_HOME, OnMemberHome)
ON_UPDATE_COMMAND_UI(ID_MEMBER_HOME, OnUpdateMemberHome)
ON_COMMAND(ID_MEMBER_INSERT, OnMemberIns)
ON_BN_CLICKED(IDC_CLEAR, OnClear)
ON_COMMAND(ID_MEMBER_SEARCH, OnMemberSea)
ON_UPDATE_COMMAND_UI(ID_MEMBER_SEARCH, OnUpdateMemberSea)
ON_COMMAND(ID_EDIT_DELETE, OnEditDelete)
ON_UPDATE_COMMAND_UI(ID_EDIT_DELETE, OnUpdateEditDelete)
ON_COMMAND(ID_EDIT_HOME, OnEditHead)
ON_UPDATE_COMMAND_UI(ID_EDIT_HOME, OnUpdateEditHead)
ON_COMMAND(ID_EDIT_INSERT, OnEditInsert)
ON_COMMAND(ID_EDIT_END, OnEditTail)
ON_UPDATE_COMMAND_UI(ID_EDIT_END, OnUpdateEditTail)
ON_COMMAND(IDC_INSTRCTION, OnInstruction)
ON_BN_CLICKED(IDC_S, OnS)
ON_BN_CLICKED(IDC_MODIFY, OnModify)
ON_COMMAND(IDC_MEMBER_MODIFY, OnMemberModify)
ON_UPDATE_COMMAND_UI(IDC_MEMBER_MODIFY, OnUpdateMemberModify)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMemberView construction/destruction
CMemberView::CMemberView()
: CFormView(CMemberView::IDD)
{
TRACE("Entering CMemberView constructor\n");
//{{AFX_DATA_INIT(CMemberView)
m_cellphone = _T("");
m_name = _T("");
m_sparephone = _T("");
m_search = _T("");
//}}AFX_DATA_INIT
m_position=NULL;
}
CMemberView::~CMemberView()
{
}
void CMemberView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMemberView)
DDX_Text(pDX, IDC_CELLPHONE, m_cellphone);
DDX_Text(pDX, IDC_NAME, m_name);
DDX_Text(pDX, IDC_SPAREPHONE, m_sparephone);
DDX_Text(pDX, IDC_SEARCH, m_search);
//}}AFX_DATA_MAP
}
BOOL CMemberView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMemberView diagnostics
#ifdef _DEBUG
void CMemberView::AssertValid() const
{
CFormView::AssertValid();
}
void CMemberView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CMemberDoc* CMemberView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMemberDoc)));
return (CMemberDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMemberView message handlers
void CMemberView::OnNext()
{
POSITION pos;
TRACE("Entering CMemberView::OnNext\n");
if((pos=m_position)!=NULL){
m_pList->GetNext(pos);
if(pos){
GetEntry(pos);
m_position=pos;
}
}
}
void CMemberView::OnPrev()
{
POSITION pos;
TRACE("Entering CMemberView::OnPrev\n");
if((pos=m_position)!=NULL){
m_pList->GetPrev(pos);
if(pos){
GetEntry(pos);
m_position=pos;
}
}
}
void CMemberView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
TRACE("Entering CMemberView::OnUpdate\n");
m_position=m_pList->GetHeadPosition();
GetEntry(m_position);
}
void CMemberView::OnInitialUpdate()
{
TRACE("Entering CMemberView::OnInitialUpdate\n");
m_pList=GetDocument()->GetList();
CFormView::OnInitialUpdate();
}
void CMemberView::OnMemberDel()
{
POSITION pos;
TRACE("Entering CMemberView::OnMemberDel\n");
if((pos=m_position)!=NULL){
m_pList->GetNext(pos);
if(pos==NULL){
pos=m_pList->GetHeadPosition();
if(pos==m_position)
pos=NULL;
}
}
GetEntry(pos);
CMember *ps=m_pList->GetAt(m_position);
m_pList->RemoveAt(m_position);
delete ps;
m_position=pos;
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(this);
}
void CMemberView::OnUpdateMemberDel(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_position!=NULL);
}
void CMemberView::OnMemberEnd()
{
TRACE("Entering CMemberView::OnMemberEnd\n");
if(!m_pList->IsEmpty()){
m_position=m_pList->GetTailPosition();
GetEntry(m_position);
}
}
void CMemberView::OnUpdateMemberEnd(CCmdUI* pCmdUI)
{
POSITION pos;
pos=m_pList->GetTailPosition();
pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
}
void CMemberView::OnMemberHome()
{
TRACE("Entering CMemberView::OnMemberHome\n");
if(!m_pList->IsEmpty())
m_position=m_pList->GetHeadPosition();
GetEntry(m_position);
}
void CMemberView::OnUpdateMemberHome(CCmdUI* pCmdUI)
{
POSITION pos;
pos=m_pList->GetHeadPosition();
pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
}
void CMemberView::OnMemberIns()
{
TRACE("Entering CMemberView::OnMemberIns\n");
Insertentry(m_position);
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(this);
}
void CMemberView::GetEntry(POSITION position)
{
if(position){
CMember*pMember=m_pList->GetAt(position);
m_name=pMember->m_name;
m_cellphone=pMember->m_cellphone;
m_sparephone=pMember->m_sparephone;
}
else
ClearEntry();
UpdateData(false);
}
void CMemberView::Insertentry(POSITION position)
{
if(UpdateData(TRUE)){
CMember*pMember=new CMember;
pMember->m_name=m_name;
pMember->m_cellphone=m_cellphone;
pMember->m_sparephone=m_sparephone;
m_position=m_pList->InsertAfter(m_position,pMember);
}
}
void CMemberView::OnClear()
{
ClearEntry();
}
void CMemberView::ClearEntry()
{
m_name="";
m_cellphone="";
m_sparephone="";
UpdateData(false);
((CDialog*)this)->GotoDlgCtrl(GetDlgItem(IDC_NAME));
}
void CMemberView::OnMemberSea()
{
POSITION pos,poss;
if(UpdateData(true)){
poss=m_pList->GetTailPosition();
pos=m_pList->GetHeadPosition();
CMember *pMember=m_pList->GetAt(pos);
CMember *sMember=m_pList->GetAt(poss);
if(m_search.Left(2)==pMember->m_name.Left(2)||m_search.Left(2)==sMember->m_name.Left(2))
{
if(m_search.Left(2)==pMember->m_name.Left(2))
{
GetEntry(pos);
SetDlgItemText(IDC_ERROR,"");}
else if(m_search.Left(2)==sMember->m_name.Left(2))
{
GetEntry(poss);
SetDlgItemText(IDC_ERROR,"");
}
}
else
{
while((pos!=m_pList->GetTailPosition())&&(pMember->m_name.Left(2)!=m_search.Left(2)))
{pMember=m_pList->GetNext(pos);
}
if(pMember->m_name.Left(2)==m_search.Left(2))
{
poss=pos;
while((pos!=m_pList->GetTailPosition())&&(pMember->m_name!=m_search))
{pMember=m_pList->GetNext(pos);}
if(pMember->m_name==m_search)
{pMember=m_pList->GetPrev(pos);
GetEntry(pos);
SetDlgItemText(IDC_ERROR,"");}
else if(pMember->m_name!=m_search)
{
pMember=m_pList->GetPrev(poss);
GetEntry(poss);}
}
else if(pMember->m_name.Left(2)!=m_search.Left(2))
{SetDlgItemText(IDC_ERROR,"对不起!电话簿中不存在该姓名!");}
}
}
}
void CMemberView::OnUpdateMemberSea(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_position!=NULL);
}
void CMemberView::OnEditDelete()
{
POSITION pos;
TRACE("Entering CMemberView::OnMemberDel\n");
if((pos=m_position)!=NULL){
m_pList->GetNext(pos);
if(pos==NULL){
pos=m_pList->GetHeadPosition();
if(pos==m_position)
pos=NULL;
}
}
GetEntry(pos);
CMember *ps=m_pList->GetAt(m_position);
m_pList->RemoveAt(m_position);
delete ps;
m_position=pos;
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(this);
}
void CMemberView::OnUpdateEditDelete(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_position!=NULL);
}
void CMemberView::OnEditHead()
{
TRACE("Entering CMemberView::OnMemberHome\n");
if(!m_pList->IsEmpty())
m_position=m_pList->GetHeadPosition();
GetEntry(m_position);
}
void CMemberView::OnUpdateEditHead(CCmdUI* pCmdUI)
{
POSITION pos;
pos=m_pList->GetHeadPosition();
pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
}
void CMemberView::OnEditInsert()
{
TRACE("Entering CMemberView::OnMemberIns\n");
Insertentry(m_position);
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(this);
}
void CMemberView::OnEditTail()
{
TRACE("Entering CMemberView::OnMemberEnd\n");
if(!m_pList->IsEmpty()){
m_position=m_pList->GetTailPosition();
GetEntry(m_position);
}
}
void CMemberView::OnUpdateEditTail(CCmdUI* pCmdUI)
{
POSITION pos;
pos=m_pList->GetTailPosition();
pCmdUI->Enable((m_position!=NULL)&&(pos!=m_position));
}
void CMemberView::OnInstruction()
{
INSTRCTION dlg;
dlg.DoModal();
}
void CMemberView::OnS()
{
POSITION pos,poss;
if(UpdateData(true)){
poss=m_pList->GetTailPosition();
pos=m_pList->GetHeadPosition();
CMember *pMember=m_pList->GetAt(pos);
CMember *sMember=m_pList->GetAt(poss);
if(m_search.Left(2)==pMember->m_name.Left(2)||m_search.Left(2)==sMember->m_name.Left(2))
{
if(m_search.Left(2)==pMember->m_name.Left(2))
{
GetEntry(pos);
SetDlgItemText(IDC_ERROR,"");}
else if(m_search.Left(2)==sMember->m_name.Left(2))
{
GetEntry(poss);
SetDlgItemText(IDC_ERROR,"");
}
}
else
{
while((pos!=m_pList->GetTailPosition())&&(pMember->m_name.Left(2)!=m_search.Left(2)))
{pMember=m_pList->GetNext(pos);
}
if(pMember->m_name.Left(2)==m_search.Left(2))
{
poss=pos;
while((pos!=m_pList->GetTailPosition())&&(pMember->m_name!=m_search))
{pMember=m_pList->GetNext(pos);}
if(pMember->m_name==m_search)
{pMember=m_pList->GetPrev(pos);
GetEntry(pos);
SetDlgItemText(IDC_ERROR,"");}
else if(pMember->m_name!=m_search)
{
pMember=m_pList->GetPrev(poss);
GetEntry(poss);}
}
else if(pMember->m_name.Left(2)!=m_search.Left(2))
{SetDlgItemText(IDC_ERROR,"对不起!电话簿中不存在该姓名!");}
}
}
}
void CMemberView::OnModify()
{
UpdateData(true);
CMember *ps=m_pList->GetAt(m_position);
ps->m_name=m_name;
ps->m_cellphone=m_cellphone;
ps->m_sparephone=m_sparephone;
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(this);
}
void CMemberView::OnMemberModify()
{
UpdateData(true);
CMember *ps=m_pList->GetAt(m_position);
ps->m_name=m_name;
ps->m_cellphone=m_cellphone;
ps->m_sparephone=m_sparephone;
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(this);
}
void CMemberView::OnUpdateMemberModify(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_position!=NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -