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

📄 bookinfoview.cpp

📁 在VC环境下运行程序前
💻 CPP
字号:
// bookinfoView.cpp : implementation of the CBookinfoView class
//

#include "stdafx.h"
#include "bookinfo.h"

#include "bookinfoSet.h"
#include "bookinfoDoc.h"
#include "bookinfoView.h"

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


/////////////////////////////////////////////////////////////////////////////
// CBookinfoView

IMPLEMENT_DYNCREATE(CBookinfoView, CRecordView)

BEGIN_MESSAGE_MAP(CBookinfoView, CRecordView)
	//{{AFX_MSG_MAP(CBookinfoView)
	ON_BN_CLICKED(IDC_BUTTON1, Onadd)
	ON_BN_CLICKED(IDC_BUTTON3, Ondelete)
	ON_BN_CLICKED(IDC_BUTTON4, Onok)
	ON_BN_CLICKED(IDC_BUTTON2, Onedit)
	ON_BN_CLICKED(IDC_BUTTON5, Onexit)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBookinfoView construction/destruction

CBookinfoView::CBookinfoView()
	: CRecordView(CBookinfoView::IDD)
{
	//{{AFX_DATA_INIT(CBookinfoView)
	m_pSet = NULL;
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	
}

CBookinfoView::~CBookinfoView()
{
}

void CBookinfoView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBookinfoView)
	DDX_Control(pDX, IDC_BUTTON2, m_edit);
	DDX_Control(pDX, IDC_BUTTON3, m_delete);
	DDX_FieldText(pDX, IDC_ISBN, m_pSet->m_ISBN, m_pSet);
	DDX_FieldText(pDX, IDC_PUBLISHCOM, m_pSet->m_PublishCom, m_pSet);
	DDX_FieldText(pDX, IDC_BOOKNAME, m_pSet->m_BookName, m_pSet);
	DDX_FieldText(pDX, IDC_AUTHOR, m_pSet->m_Author, m_pSet);
	DDX_FieldText(pDX, IDC_PUBLISHTIME, m_pSet->m_PublishTime, m_pSet);
	//}}AFX_DATA_MAP
}

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

	return CRecordView::PreCreateWindow(cs);
}

void CBookinfoView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_bookinfoSet;

	//使用书签定位
	m_pSet->Open( CRecordset::snapshot, NULL,
         CRecordset::useBookmarks );

 

	CRecordView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
	
}

/////////////////////////////////////////////////////////////////////////////
// CBookinfoView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CBookinfoView diagnostics

#ifdef _DEBUG
void CBookinfoView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CBookinfoView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CBookinfoView database support
CRecordset* CBookinfoView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CBookinfoView message handlers

void CBookinfoView::Onadd() 
{
	// TODO: Add your control notification handler code here
	//首先清空
	CWnd* t;
	t=CWnd::GetDlgItem(IDC_ISBN);
	t->SetWindowText("");	
	t=CWnd::GetDlgItem(IDC_BOOKNAME);
	t->SetWindowText("");
	t=CWnd::GetDlgItem(IDC_AUTHOR);
	t->SetWindowText("");
	t=CWnd::GetDlgItem(IDC_PUBLISHCOM);
	t->SetWindowText("");
	t=CWnd::GetDlgItem(IDC_PUBLISHTIME);
	t->SetWindowText("");
	//添加时不可编辑和删除
	m_edit.EnableWindow(false);
	m_delete.EnableWindow(false);
	//添加时各edit框可写
	((CEdit*)GetDlgItem(IDC_ISBN))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_BOOKNAME))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_AUTHOR))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_PUBLISHCOM))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_PUBLISHTIME))->SetReadOnly(false);	
	state=0;
}

void CBookinfoView::Ondelete() 
{
	// TODO: Add your control notification handler code here
	if (MessageBox("确定要删除吗?","提示",MB_YESNO)==IDYES)
	{
	//删除
    m_pSet->Delete();
	//重新获得记录集
    m_pSet->Requery();
	//将变量值显示在控件中
    UpdateData(FALSE);
	MessageBox("删除成功!","提示信息");
	}
	
}

void CBookinfoView::Onok() 
{
	// TODO: Add your control notification handler code here
	//信息必须填写完整
	CWnd* t;
	CString s1,s2,s3,s4,s5;
	t=CWnd::GetDlgItem(IDC_ISBN);
	t->GetWindowText(s1);
	t=CWnd::GetDlgItem(IDC_BOOKNAME);
	t->GetWindowText(s2);
	t=CWnd::GetDlgItem(IDC_AUTHOR);
	t->GetWindowText(s3);
	t=CWnd::GetDlgItem(IDC_PUBLISHCOM);
	t->GetWindowText(s4);
	t=CWnd::GetDlgItem(IDC_PUBLISHTIME);
	t->GetWindowText(s5);
	if ((s1=="")||(s2=="")||(s3=="")||(s4=="")||(s5=="")) 
	{
		MessageBox("请将信息填写完整!","错误提示");
		return;
	}

    //创建CDBVariant对象
	CDBVariant bookmark;

	// 设置书签
	m_pSet->GetBookmark( bookmark );

	//ISBN号不可重复
	if (((state==1)&&!(old==s1))||(state==0))
	{
	if (!m_pSet->IsOpen()) 
    m_pSet->Open();
	m_pSet->MoveFirst();
	while (!m_pSet->IsEOF())
	{   
		if (m_pSet->m_ISBN==s1)
		{
			MessageBox("此ISBN号已存在,请重试!","信息提示");
			UpdateData(FALSE);
			return;
		}
		else m_pSet->MoveNext();

	}
	m_pSet->MoveFirst();
	};

	//获得书签
	m_pSet->SetBookmark( bookmark );
	try
	{
	//在库中添加一条空的记录
	if (state==0) 
		m_pSet->AddNew();
	//使当前记录处于编辑状态
	else 
	m_pSet->Edit();	
	//将控件中所输入内容赋给变量
    UpdateData(TRUE);	
	//更新数据库	
    m_pSet->Update();	
	//重新获得数据
    m_pSet->Requery();	
	//将变量值显示在控件中
    UpdateData(FALSE);
	}
	catch (CFileException* e)
   {
      e->ReportError();
		return;
   }
	MessageBox("保存成功!","信息提示");
	//保存后使编辑和删除按钮可用
	m_edit.EnableWindow();
	m_delete.EnableWindow();
	//保存后使各edit框只读
	((CEdit*)GetDlgItem(IDC_ISBN))->SetReadOnly(TRUE);
	((CEdit*)GetDlgItem(IDC_BOOKNAME))->SetReadOnly(TRUE);
	((CEdit*)GetDlgItem(IDC_AUTHOR))->SetReadOnly(TRUE);
	((CEdit*)GetDlgItem(IDC_PUBLISHCOM))->SetReadOnly(TRUE);
	((CEdit*)GetDlgItem(IDC_PUBLISHTIME))->SetReadOnly(TRUE);
	
}

void CBookinfoView::Onedit() 
{
	// TODO: Add your control notification handler code here
	
	//编辑时不可删除
	m_delete.EnableWindow(false);
	//编辑时各edit框可写
	((CEdit*)GetDlgItem(IDC_ISBN))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_BOOKNAME))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_AUTHOR))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_PUBLISHCOM))->SetReadOnly(false);
	((CEdit*)GetDlgItem(IDC_PUBLISHTIME))->SetReadOnly(false);
	state=1;
	CWnd* t;
	CString s;
	t=CWnd::GetDlgItem(IDC_ISBN);
	t->GetWindowText(s);
	old=s;	
	
}

void CBookinfoView::Onexit() 
{
	// TODO: Add your control notification handler code here
	//退出
	AfxGetMainWnd()->SendMessage(WM_CLOSE);
	
}

⌨️ 快捷键说明

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