📄 publishview.cpp
字号:
// PublishView.cpp : implementation of the CPublishView class
//
#include "stdafx.h"
#include "Publish.h"
#include "PublishSet.h"
#include "PublishDoc.h"
#include "PublishView.h"
#include "MoveToRecord.h"
#include "Search.h"
#include "ListDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPublishView
IMPLEMENT_DYNCREATE(CPublishView, CRecordView)
BEGIN_MESSAGE_MAP(CPublishView, CRecordView)
//{{AFX_MSG_MAP(CPublishView)
ON_COMMAND(ID_UPDATE_RECORD, OnUpdateRecord)
ON_UPDATE_COMMAND_UI(ID_UPDATE_RECORD, OnUpdateUpdateRecord)
ON_COMMAND(ID_DELETE_RECORD, OnDeleteRecord)
ON_UPDATE_COMMAND_UI(ID_DELETE_RECORD, OnUpdateDeleteRecord)
ON_COMMAND(ID_CLEAR_DOMAIN, OnClearDomain)
ON_COMMAND(ID_ADD_RECORD, OnAddRecord)
ON_COMMAND(ID_MoveToRecord, OnMoveToRecord)
ON_COMMAND(ID_SORT_PRICE, OnSortPrice)
ON_COMMAND(ID_Search, OnSearch)
ON_COMMAND(ID_BUTTON32775, OnAddRecord)
ON_COMMAND(ID_BUTTON32776, OnDeleteRecord)
ON_COMMAND(ID_BUTTON32780, OnUpdateRecord)
ON_COMMAND(ID_LIST, OnList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPublishView construction/destruction
CPublishView::CPublishView()
: CRecordView(CPublishView::IDD)
{
//{{AFX_DATA_INIT(CPublishView)
m_pSet = NULL;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CPublishView::~CPublishView()
{
}
void CPublishView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPublishView)
DDX_FieldText(pDX, IDC_AUTOR, m_pSet->m_column1, m_pSet);
DDX_FieldText(pDX, IDC_PRICE, m_pSet->m_column3, m_pSet);
DDX_FieldText(pDX, IDC_PUBLISH, m_pSet->m_column2, m_pSet);
DDX_FieldText(pDX, IDC_BOOKID, m_pSet->m___ID, m_pSet);
//}}AFX_DATA_MAP
}
BOOL CPublishView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CRecordView::PreCreateWindow(cs);
}
void CPublishView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_publishSet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
/////////////////////////////////////////////////////////////////////////////
// CPublishView diagnostics
#ifdef _DEBUG
void CPublishView::AssertValid() const
{
CRecordView::AssertValid();
}
void CPublishView::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
CPublishDoc* CPublishView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPublishDoc)));
return (CPublishDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPublishView database support
CRecordset* CPublishView::OnGetRecordset()
{
return m_pSet;
}
/////////////////////////////////////////////////////////////////////////////
// CPublishView message handlers
BOOL CPublishView::OnMove(UINT nIDMoveCommand)
{
// TODO: Add your specialized code here and/or call the base class
switch(nIDMoveCommand)
{
case ID_RECORD_PREV:
m_pSet->MovePrev();
if(!m_pSet->IsBOF())
break;
case ID_RECORD_FIRST:
m_pSet->MoveFirst();
break;
case ID_RECORD_NEXT:
m_pSet->MoveNext();
if(!m_pSet->IsEOF())
break;
if(!m_pSet->CanScroll())
{
m_pSet->SetFieldNull(NULL);
break;
}
case ID_RECORD_LAST:
m_pSet->MoveLast();
break;
default:
ASSERT(FALSE);
}
UpdateData(FALSE);
return TRUE;
// return CRecordView::OnMove(nIDMoveCommand);
}
void CPublishView::OnUpdateRecord()
{//更新
// TODO: Add your command handler code here
m_pSet->Edit();
UpdateData(TRUE);
if(m_pSet->CanUpdate())
m_pSet->Update();
}
void CPublishView::OnUpdateUpdateRecord(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(!m_pSet->IsEOF());
}
void CPublishView::OnDeleteRecord()
{//删除
// TODO: Add your command handler code here
CRecordsetStatus m_cStatus;
try{
m_pSet->Delete();
}
catch(CDBException* m_pEx)
{
AfxMessageBox(m_pEx->m_strError);
m_pEx->Delete();
m_pSet->MoveFirst();
UpdateData(FALSE);
return;
}
m_pSet->GetStatus(m_cStatus);
if(m_cStatus.m_lCurrentRecord==0)
m_pSet->MoveFirst();
else
m_pSet->MoveNext();
UpdateData(FALSE);
}
void CPublishView::OnUpdateDeleteRecord(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(!m_pSet->IsEOF());
}
void CPublishView::OnClearDomain()
{//清除域
// TODO: Add your command handler code here
m_pSet->SetFieldNull(NULL);
UpdateData(FALSE);
}
void CPublishView::OnAddRecord()
{//添加
// TODO: Add your command handler code here
CRecordset* pSet=OnGetRecordset();//
if(pSet->CanUpdate()&&!pSet->IsDeleted())
{
pSet->Edit();
if(!UpdateData())
return;
pSet->Update();
}
long m_lNewID=m_pSet->GetMaxID()+1;
m_pSet->AddNew();
m_pSet->m___ID=m_lNewID;
m_pSet->Update();
m_pSet->Requery();
m_pSet->MoveLast();
UpdateData(FALSE);
}
void CPublishView::OnMoveToRecord()
{//移动到记录
// TODO: Add your command handler code here
CMoveToRecord dlgMoveTo;
if(dlgMoveTo.DoModal()==IDOK)
{
CRecordset *pSet=OnGetRecordset();
if(pSet->CanUpdate()&&pSet->IsDeleted())
{
pSet->Edit();
if(!UpdateData())
return;
pSet->Update();
}
pSet->SetAbsolutePosition(dlgMoveTo.m_RecordID);
UpdateData(FALSE);
}
}
void CPublishView::OnSortPrice()
{//排序
// TODO: Add your command handler code here
m_pSet->Close();
m_pSet->m_strSort="价格";
m_pSet->Open();
UpdateData(FALSE);
}
void CPublishView::OnSearch()
{//查询
// TODO: Add your command handler code here
DoFilter("作者");
}
void CPublishView::DoFilter(CString col)
{
CSearch dlg;
int result=dlg.DoModal();
if(result==IDOK)
{
CString str=col+"='"+dlg.m_Edit_Search+"'";
m_pSet->Close();
m_pSet->m_strFilter=str;
m_pSet->Open();
int recCount=m_pSet->GetRecordCount();
if(recCount==0)
{
AfxMessageBox("找不到相符的记录!");
m_pSet->Close();
m_pSet->m_strFilter;
m_pSet->Open();
}
UpdateData(FALSE);
}
}
void CPublishView::OnDraw(CDC *pDC)
{//加载位图
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap bmp1;
bmp1.LoadBitmap(IDB_BITMAP1);
BITMAP bm;
bmp1.GetBitmap(&bm);
CBitmap* pOldBitmap=dcMemory.SelectObject(&bmp1);
pDC->BitBlt(100,20,bm.bmWidth,bm.bmHeight,&dcMemory,0,0,SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
}
void CPublishView::OnList()
{
// TODO: Add your command handler code here
CListDlg listdlg;
listdlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -