📄 songview.cpp
字号:
// SongView.cpp : CSongView 类的实现
//
#include "stdafx.h"
#include "Song.h"
#include "SongSet.h"
#include "SongDoc.h"
#include "SongView.h"
#include ".\songview.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CSongView
IMPLEMENT_DYNCREATE(CSongView, CRecordView)
BEGIN_MESSAGE_MAP(CSongView, CRecordView)
ON_COMMAND(ID_BTUPDATE, OnBtupdate)
ON_COMMAND(ID_BTDEL, OnBtdel)
ON_COMMAND(ID_BTADD, OnBtadd)
ON_COMMAND(ID_LOOKSONG, OnLooksong)
END_MESSAGE_MAP()
// CSongView 构造/析构
CSongView::CSongView()
: CRecordView(CSongView::IDD)
{
m_pSet = NULL;
// TODO: 在此处添加构造代码
m_pDlg = NULL;
}
CSongView::~CSongView()
{
ReleaseDlg();
}
void CSongView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
// 可以在此处插入 DDX_Field* 函数以将控件“连接”到数据库字段,例如
// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet)
// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);
// 有关更多信息,请参阅 MSDN 和 ODBC 示例
DDX_FieldText(pDX, IDC_EDIT_SONGNAME, m_pSet->m_Name, m_pSet);
DDX_FieldText(pDX, IDC_EDIT_TIME, m_pSet->m_Time, m_pSet);
DDX_FieldText(pDX, IDC_EDIT_SINGER, m_pSet->m_Singer, m_pSet);
DDX_FieldText(pDX, IDC_EDIT_OTHER, m_pSet->m_Other, m_pSet);
}
BOOL CSongView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CRecordView::PreCreateWindow(cs);
}
void CSongView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_SongSet;
CRecordView::OnInitialUpdate();
}
// CSongView 诊断
#ifdef _DEBUG
void CSongView::AssertValid() const
{
CRecordView::AssertValid();
}
void CSongView::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
CSongDoc* CSongView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSongDoc)));
return (CSongDoc*)m_pDocument;
}
#endif //_DEBUG
// CSongView 数据库支持
CRecordset* CSongView::OnGetRecordset()
{
return m_pSet;
}
// CSongView 消息处理程序
void CSongView::OnBtupdate()
{
try
{
if( m_pSet->CanUpdate() == false)
{
MessageBox("该纪录不能更新");
return;
}
m_pSet->Edit();
// 更新数据
if( UpdateData() == false )
return;
if( m_pSet->Update() == false )
MessageBox("更新失败");
}
catch(...)
{
MessageBox("更新失败");
}
}
void CSongView::OnBtdel()
{
try
{
if( m_pSet->CanUpdate() == false )
{
MessageBox("该纪录不能删除");
return;
}
m_pSet->Delete();
m_pSet->MoveNext();
}
catch(...)
{
MessageBox("删除失败");
}
this->ReOpenDB();
UpdateData(false);
}
void CSongView::OnBtadd()
{
try
{
if( !m_pSet->CanAppend() )
{
MessageBox("不能添加纪录");
return ;
}
m_pSet->AddNew();
if( UpdateData() == false )
return;
if( !m_pSet->Update() )
{
MessageBox("添加纪录失败");
return;
}
}
catch(...)
{
MessageBox("添加失败");
}
this->ReOpenDB();
UpdateData(false);
}
// 重新打开表
void CSongView::ReOpenDB()
{
try
{
m_pSet->Close();
m_pSet->Open();
}
catch(...)
{
MessageBox("打开数据库失败");
}
}
// 查看歌曲列表
void CSongView::OnLooksong()
{
// TODO: 在此添加命令处理程序代码
ReleaseDlg();
m_pDlg = new CShowSongDlg(this);
if( m_pDlg->Create() == false )
{
delete m_pDlg;
m_pDlg = NULL;
MessageBox("对话框创建失败");
return;
}
m_pDlg->ShowWindow( SW_SHOW );
}
// 释放m_pDlg 资源
void CSongView::ReleaseDlg()
{
if( m_pDlg != NULL )
{
m_pDlg->DestroyWindow();
delete m_pDlg;
m_pDlg = NULL;
}
}
// 接收消息
BOOL CSongView::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
if( message == WM_MYUSER_DLGEXIT )
ReleaseDlg();
return CRecordView::OnWndMsg(message, wParam, lParam, pResult);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -