📄 phonepage.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 + -