📄 bookinfoview.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 + -