ex30doc.cpp

来自「一些VC++的经典实例」· C++ 代码 · 共 203 行

CPP
203
字号
// ex30Doc.cpp : implementation of the CEx30Doc class
//

#include "stdafx.h"
#include "ex30.h"

#include "ex30Doc.h"
#include "card.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEx30Doc

IMPLEMENT_DYNCREATE(CEx30Doc, CDocument)

BEGIN_MESSAGE_MAP(CEx30Doc, CDocument)
	//{{AFX_MSG_MAP(CEx30Doc)
	ON_COMMAND(ID_CARD_DELETE, OnCardDelete)
	ON_COMMAND(ID_CARD_INSERT, OnCardInsert)
	ON_COMMAND(ID_CARD_SEARCH, OnCardSearch)
	ON_COMMAND(ID_CARD_UPDATE, OnCardUpdate)
	ON_UPDATE_COMMAND_UI(ID_CARD_DELETE, OnUpdateCardDelete)
	ON_UPDATE_COMMAND_UI(ID_CARD_UPDATE, OnUpdateCardUpdate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEx30Doc construction/destruction

CEx30Doc::CEx30Doc()
{
	// TODO: add one-time construction code here
	lpHead=new CCard;
	lpCurrent=NULL;
	IsChangeValidate=FALSE;
}

CEx30Doc::~CEx30Doc()
{
}

BOOL CEx30Doc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CEx30Doc serialization

void CEx30Doc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CEx30Doc diagnostics

#ifdef _DEBUG
void CEx30Doc::AssertValid() const
{
	CDocument::AssertValid();
}

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

/////////////////////////////////////////////////////////////////////////////
// CEx30Doc commands

void CEx30Doc::OnCardDelete() 
{
	// TODO: Add your command handler code here
	CCard * p;	
	m_DeleteDlg.m_Name="请输入需要删除的记录关键字";
	m_DeleteDlg.m_Mail="请输入需要删除的记录关键字";

	if(m_DeleteDlg.DoModal()==IDOK)
	{
		p=lpHead->DeleteCard(m_DeleteDlg.m_Name,m_DeleteDlg.m_Mail,lpHead);
		if(p!=NULL)
		{
			if(p->NextCard()!=NULL)
				lpCurrent=p->NextCard();
			else
				lpCurrent=NULL;
			delete p;
		}
		else
			AfxMessageBox("该记录不存在");

		if(lpHead->NextCard()==NULL)
			IsChangeValidate=FALSE;
		else
			IsChangeValidate=TRUE;
		
		UpdateAllViews(NULL);
	}	
}

void CEx30Doc::OnCardInsert() 
{
	// TODO: Add your command handler code here
	m_InsertDlg.m_Name="请输入新插入数据";
	m_InsertDlg.m_Mail="请输入新插入数据";
	if(m_InsertDlg.DoModal()==IDOK)
	{
		CCard * lpCCard=new CCard;
		lpCCard->UpdateCard(m_InsertDlg.m_Name,m_InsertDlg.m_Mail);

		lpCCard->InsertCard(lpCCard,lpHead);

		IsChangeValidate=TRUE;
		lpCurrent=lpCCard;

		UpdateAllViews(NULL);
		
	}
}

void CEx30Doc::OnCardSearch() 
{
	// TODO: Add your command handler code here
	m_SearchDlg.m_Name="请输入查询的关键字";
	m_SearchDlg.m_Mail="请输入查询的关键字";
	if(m_SearchDlg.DoModal()==IDOK)
	{
		lpCurrent=lpHead->SearchCard(m_SearchDlg.m_Name,m_SearchDlg.m_Mail,lpHead);
		
		if(lpCurrent==NULL)
		{
			AfxMessageBox("该记录不存在");
		}
		else
		{
			IsChangeValidate=TRUE;
			UpdateAllViews(NULL);
		}
	}
}

void CEx30Doc::OnCardUpdate() 
{
	// TODO: Add your command handler code here
	m_InsertDlg.m_Name="请输入更新后数据";
	m_InsertDlg.m_Mail="请输入更新后数据";

	if(m_InsertDlg.DoModal()==IDOK)
	{
		lpCurrent->UpdateCard(m_InsertDlg.m_Name,m_InsertDlg.m_Mail);
		UpdateAllViews(NULL);		
	}
}


void CEx30Doc::OnUpdateCardDelete(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(IsChangeValidate==FALSE)
	{
		pCmdUI->Enable(FALSE);
	}
	else
	{
		pCmdUI->Enable();
	}
}

void CEx30Doc::OnUpdateCardUpdate(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(IsChangeValidate==FALSE)
	{
		pCmdUI->Enable(FALSE);
	}
	else
	{
		pCmdUI->Enable();
	}
}

⌨️ 快捷键说明

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