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

📄 phonepage.cpp

📁 access数据库,vc实现的电话本,教材学习类,虽没有大功能,却有利于初学者了解vc数据库程序编写
💻 CPP
字号:
// PhonePage.cpp : implementation file
//

#include "stdafx.h"
#include "phonebook.h"
#include "PhonePage.h"
#include "FindDlg.h"
#include "AboutDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// PhonePage property page

IMPLEMENT_DYNCREATE(PhonePage, CPropertyPage)

PhonePage::PhonePage() : CPropertyPage(PhonePage::IDD)
{
	//{{AFX_DATA_INIT(PhonePage)
	//}}AFX_DATA_INIT
	nCurrentPage=1;
	AddClicked=FALSE;
	EditClicked=FALSE;
}

PhonePage::~PhonePage()
{
}

void PhonePage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(PhonePage)
	DDX_Control(pDX, IDC_BUTTON_ABOUT, m_about);
	DDX_Control(pDX, IDC_BUTTON_FIND, m_find);
	DDX_Control(pDX, IDC_PREVIEW, m_pre);
	DDX_Control(pDX, IDC_NEXT, m_next);
	DDX_Control(pDX, IDC_LAST, m_last);
	DDX_Control(pDX, IDC_FIRST, m_first);
	DDX_Control(pDX, IDC_EDIT, m_edit);
	DDX_Control(pDX, IDC_DEL, m_del);
	DDX_Control(pDX, IDC_ADD, m_add);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(PhonePage, CPropertyPage)
	//{{AFX_MSG_MAP(PhonePage)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_FIRST, OnFirst)
	ON_BN_CLICKED(IDC_PREVIEW, OnPreview)
	ON_BN_CLICKED(IDC_NEXT, OnNext)
	ON_BN_CLICKED(IDC_LAST, OnLast)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_EDIT, OnEdit)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_BN_CLICKED(IDC_BUTTON_FIND, OnButtonFind)
	ON_BN_CLICKED(IDC_BUTTON_ABOUT, OnButtonAbout)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// PhonePage message handlers

BOOL PhonePage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	m_brush.CreateSolidBrush(RGB(0,170,170));
	CRect rect;
	Childdlg.Create(IDD_DETAIL,this);
	Dlghand=Childdlg.GetSafeHwnd();
	GetDlgItem(IDC_STATIC_FRAME)->GetWindowRect(&rect);
	ScreenToClient(&rect);
	::MoveWindow(Dlghand,rect.left,rect.top,rect.Width(),rect.Height(),0);
	::ShowWindow(Dlghand,SW_SHOW);
	nAllPage=Childdlg.GetNUM();
	m_showpage=". 1 .";
	GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
	OnFirst();
	Childdlg.SetEditReadOnly(TRUE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

HBRUSH PhonePage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = (HBRUSH)m_brush;
  	if(nCtlColor==CTLCOLOR_STATIC)
	{   
		pDC->SetBkMode(TRANSPARENT);
		return hbr;
	}
	if(nCtlColor==CTLCOLOR_EDIT)
		return NULL;
	return hbr;
}

void PhonePage::OnFirst() 
{
	GetDlgItem(IDC_PREVIEW)->EnableWindow(FALSE);
	GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
	GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
	GetDlgItem(IDC_LAST)->EnableWindow(TRUE);

	Childdlg.ShowWindow(SW_HIDE);
	AnimateWindow(Childdlg,200, AW_SLIDE | AW_VER_POSITIVE);
	
	Childdlg.ShowDetail(-2);

	nCurrentPage=1;
	m_showpage.Format(". %d .",nCurrentPage);
	GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
	Invalidate();
}

void PhonePage::OnPreview() 
{
	if(nCurrentPage==1)
		return ;
	GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
	GetDlgItem(IDC_LAST)->EnableWindow(TRUE);

	Childdlg.ShowWindow(SW_HIDE);
	AnimateWindow(Childdlg,200, AW_SLIDE | AW_HOR_POSITIVE);
	
	Childdlg.ShowDetail(-1);

	nCurrentPage--;
	m_showpage.Format(". %d .",nCurrentPage);;
	GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
	if(nCurrentPage==1)
	{
		GetDlgItem(IDC_PREVIEW)->EnableWindow(FALSE);
		GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
	}
	Invalidate();
}

void PhonePage::OnNext() 
{
	if(nCurrentPage==nAllPage)
		return ;

	GetDlgItem(IDC_PREVIEW)->EnableWindow(TRUE);
	GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);

	Childdlg.ShowWindow(SW_HIDE);
	AnimateWindow(Childdlg,200, AW_SLIDE | AW_HOR_NEGATIVE);
	
	Childdlg.ShowDetail(1);

	nCurrentPage++;
	m_showpage.Format(". %d .",nCurrentPage);;
	GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
	if(nCurrentPage==nAllPage)
	{
		GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
		GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
	}
	Invalidate();
}

void PhonePage::OnLast() 
{
	if(nCurrentPage==nAllPage)
		return ;

	GetDlgItem(IDC_PREVIEW)->EnableWindow(TRUE);
	GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);

	Childdlg.ShowWindow(SW_HIDE);
	AnimateWindow(Childdlg,200, AW_SLIDE | AW_VER_NEGATIVE);
	
	Childdlg.ShowDetail(2);

	nCurrentPage=nAllPage;
	m_showpage.Format(". %d .",nCurrentPage);
	GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
	if(nCurrentPage==nAllPage)
	{
		GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
		GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
	}
	Invalidate();
}

void PhonePage::OnAdd() 
{
	if(!EditClicked)
	{
		AddClicked=!AddClicked;
		if(AddClicked)
		{
			GetDlgItem(IDC_ADD)->SetWindowText("确定");
			GetDlgItem(IDC_EDIT)->SetWindowText("取消");
			GetDlgItem(IDC_DEL)->ShowWindow(FALSE);
			Childdlg.ClearEditText();
			Childdlg.SetEditReadOnly(FALSE);
		}
		else
		{
			GetDlgItem(IDC_ADD)->SetWindowText("添加新记录");
			GetDlgItem(IDC_EDIT)->SetWindowText("修改记录");
			GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
			Childdlg.NewRecord();
			nAllPage++;
			OnLast();			
		}
	}
	else
	{
		GetDlgItem(IDC_ADD)->SetWindowText("添加新记录");
		GetDlgItem(IDC_EDIT)->SetWindowText("修改记录");
		GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
		Childdlg.EditRecord(1);
		EditClicked=!EditClicked;
	}
}

void PhonePage::OnEdit() 
{
	if(!AddClicked)
	{
		EditClicked=!EditClicked;
		if(EditClicked)
		{
			GetDlgItem(IDC_ADD)->SetWindowText("确定");
			GetDlgItem(IDC_EDIT)->SetWindowText("取消");
			GetDlgItem(IDC_DEL)->ShowWindow(FALSE);
			Childdlg.SetEditReadOnly(FALSE);
			Childdlg.EditRecord(0);
		}
		else
		{
			GetDlgItem(IDC_ADD)->SetWindowText("添加");
			GetDlgItem(IDC_EDIT)->SetWindowText("修改");
			GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
			Childdlg.SetEditReadOnly(TRUE);
			
		}
	}
	else
	{
		GetDlgItem(IDC_ADD)->SetWindowText("添加新记录");
		GetDlgItem(IDC_EDIT)->SetWindowText("修改记录");
		GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
		Childdlg.SetEditReadOnly(FALSE);
		Childdlg.ShowDetail(0);
		AddClicked=!AddClicked;
	}
}

void PhonePage::OnDel() 
{
	Childdlg.DelRecord();
	
	if(nAllPage == nCurrentPage)
	{
		OnPreview();
	}
	else
		OnNext();
	nAllPage--;
}

void PhonePage::OnButtonFind() 
{
	FindDlg dlg;
	CString name;
	int sel;
	bool re=1;//显示是否有多个查找结果
	UINT ID=0;
	if(dlg.DoModal()==IDOK)
	{
		name=dlg.GetValue();
		sel=dlg.GetSelect();
		ID = Childdlg.Find(name,sel+1,re);
		if(ID==0)
		{
			MessageBox("没有查到!","查找",MB_OK);
			OnFirst();
			return ;
		}
		Childdlg.GetValue();
		nCurrentPage=ID;
		m_showpage.Format(". %d .",nCurrentPage);
		GetDlgItem(IDC_PREVIEW)->EnableWindow(TRUE);
		GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);
		GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
		GetDlgItem(IDC_LAST)->EnableWindow(TRUE);

		if(ID == 1)
		{		
			GetDlgItem(IDC_PREVIEW)->EnableWindow(FALSE);
			GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
		}
		else if(ID == (UINT)nAllPage )
		{
			GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
			GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
		}
		UpdateData(TRUE);
		TRACE("\nID is %d",ID);
	}

}

void PhonePage::OnButtonAbout() 
{
	AboutDlg dlg;
	dlg.DoModal();
}

⌨️ 快捷键说明

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