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

📄 songview.cpp

📁 使用Visual C++ .NET实现简单了一个歌曲管理系统
💻 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 + -