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

📄 addrlistdlg.cpp

📁 实现了一个简单的个人事务助理的工具
💻 CPP
字号:
// AddrListDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyAssistant.h"
#include "AddrListDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAddrListDlg dialog


CAddrListDlg::CAddrListDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAddrListDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAddrListDlg)
	m_strName = _T("");
	m_nAge = 0;
	m_strMobilPhone = _T("");
	m_strMemory = _T("");
	m_strTelePhone = _T("");
	//}}AFX_DATA_INIT
}


void CAddrListDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAddrListDlg)
	DDX_Control(pDX, IDC_RELATION, m_comboRelation);
	DDX_Control(pDX, IDC_SEX, m_comboSex);
	DDX_Text(pDX, IDC_NAME, m_strName);
	DDX_Text(pDX, IDC_AGE, m_nAge);
	DDX_Text(pDX, IDC_MOBILPHONE, m_strMobilPhone);
	DDX_Text(pDX, IDC_MEMORY, m_strMemory);
	DDX_Text(pDX, IDC_TELEPHONE, m_strTelePhone);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAddrListDlg, CDialog)
	//{{AFX_MSG_MAP(CAddrListDlg)
	ON_BN_CLICKED(IDC_QUERY, OnQuery)
	ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAddrListDlg message handlers

void CAddrListDlg::OnOK() 
{
	// TODO: Add extra validation here
	
	// CDialog::OnOK();
}

void CAddrListDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	// CDialog::OnCancel();
}

BOOL CAddrListDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_nAge = 23;

	m_comboSex.AddString("男");
	m_comboSex.AddString("女");
	m_comboSex.SetCurSel(0);

	m_comboRelation.AddString("朋友");
	m_comboRelation.AddString("同学");
	m_comboRelation.AddString("同事");
	m_comboRelation.AddString("亲属");
	m_comboRelation.AddString("其它");
	m_comboRelation.SetCurSel(0);

	UpdateData(FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAddrListDlg::OnQuery() 
{
	UpdateData();

	m_strFilter = "Name = \'" + m_strName + "\'";

	QueryFromDb();
}

void CAddrListDlg::OnUpdate() 
{
	UpdateData();

	m_comboSex.GetWindowText(m_strSex);
	m_comboRelation.GetWindowText(m_strRelation);
	
	if(!SaveToDb()) {
		MessageBox("提交失败!");
	}
	else {
		MessageBox("提交成功!");
	}
}

BOOL CAddrListDlg::SaveToDb()
{
	p_Database = new CDatabase;

	p_Database->SetLoginTimeout(5);

	BOOL p_Status = FALSE;
	try
	{
		p_Status = p_Database->Open("Assistant");
		if(p_Status)
			TRACE("\nDB opened successfully\n");
		else
			TRACE("\nOpen DSN failed.\n");
	}
	catch(CMemoryException* pEx)
	{
		pEx->ReportError();
	}
	catch(CDBException*	pDBEx)
	{
		pDBEx->ReportError();
		TRACE("RetCOde:%d strError:[%d] strState: [%d]\n",
			pDBEx->m_nRetCode,
			pDBEx->m_strError,
			pDBEx->m_strStateNativeOrigin);
	}

	if(!p_Status)
	{
		MessageBox("Open DSN Failed.");

		if(p_Database->IsOpen())	p_Database->Close();
		if(p_Database	!=	NULL)	delete	p_Database;

		return	FALSE;
	}

	p_Record = new	CAddrListRecord(p_Database);
	if(!p_Record->Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)"AddrList"))
	{
		MessageBox("Open Table SiteData Failed.");

		if(p_Record->IsOpen())		p_Record->Close();
		if(p_Database->IsOpen())	p_Database->Close();

		delete	p_Record;
		delete	p_Database;

		return FALSE;
	}

	p_Record->AddNew();
	p_Record->m_Name = m_strName;
	p_Record->m_Sex = m_strSex;
	p_Record->m_Age = m_nAge;
	p_Record->m_Relation = m_strRelation;
	p_Record->m_TelePhone = m_strTelePhone;
	p_Record->m_MobilPhone = m_strMobilPhone;
//	p_Record->m_Address = m_strAddress;
	p_Record->m_Comments = m_strMemory;
	p_Record->Update();

	if(p_Record->IsOpen())		p_Record->Close();
	if(p_Database->IsOpen())	p_Database->Close();

	delete	p_Record;
	delete	p_Database;	

	return TRUE;
}

BOOL CAddrListDlg::QueryFromDb()
{
	p_Database = new CDatabase;

	p_Database->SetLoginTimeout(5);

	BOOL p_Status = FALSE;
	try
	{
		p_Status = p_Database->Open("Assistant");
		if(p_Status)
			TRACE("\nDB opened successfully\n");
		else
			TRACE("\nOpen DSN failed.\n");
	}
	catch(CMemoryException* pEx)
	{
		pEx->ReportError();
	}
	catch(CDBException*	pDBEx)
	{
		pDBEx->ReportError();
		TRACE("RetCOde:%d strError:[%d] strState: [%d]\n",
			pDBEx->m_nRetCode,
			pDBEx->m_strError,
			pDBEx->m_strStateNativeOrigin);
	}

	if(!p_Status)
	{
		MessageBox("Open DSN Failed.");

		if(p_Database->IsOpen())	p_Database->Close();
		if(p_Database	!=	NULL)	delete	p_Database;

		return	FALSE;
	}

	p_Record = new	CAddrListRecord(p_Database);
	p_Record->m_strFilter = m_strFilter;

	if(!p_Record->Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)"AddrList"))
	{
		MessageBox("Open Table SiteData Failed.");

		if(p_Record->IsOpen())		p_Record->Close();
		if(p_Database->IsOpen())	p_Database->Close();

		delete	p_Record;
		delete	p_Database;

		return FALSE;
	}

	CString str;
	if(!p_Record->IsBOF())
	{
		m_strName = p_Record->m_Name;
		m_strSex = p_Record->m_Sex;
		m_nAge = p_Record->m_Age;
		m_strRelation = p_Record->m_Relation;
		m_strTelePhone = p_Record->m_TelePhone;
		m_strMobilPhone = p_Record->m_MobilPhone;
	//	m_strAddress = p_Record->m_Address;
		m_strMemory = p_Record->m_Comments;

		UpdateData(FALSE);
	}
//
	if(p_Record->IsOpen())		p_Record->Close();
	if(p_Database->IsOpen())	p_Database->Close();

	delete	p_Record;
	delete	p_Database;	

	return TRUE;
}

⌨️ 快捷键说明

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