📄 program79view.cpp
字号:
// program79View.cpp : implementation of the CProgram79View class
//
#include "stdafx.h"
#include "program79.h"
#include "program79Doc.h"
#include "program79View.h"
#include "addrlist.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CProgram79View
IMPLEMENT_DYNCREATE(CProgram79View, CFormView)
BEGIN_MESSAGE_MAP(CProgram79View, CFormView)
//{{AFX_MSG_MAP(CProgram79View)
ON_BN_CLICKED(IDC_BUTADD, OnButadd)
ON_BN_CLICKED(IDC_BUTDEL, OnButdel)
ON_BN_CLICKED(IDC_BUTNEXT, OnButnext)
ON_BN_CLICKED(IDC_BUTPRV, OnButprv)
ON_BN_CLICKED(IDC_BUTQUERY, OnButquery)
ON_BN_CLICKED(IDC_BUTTOTAL, OnButtotal)
ON_CBN_SETFOCUS(IDC_CBQUERY, OnSetfocusCbquery)
ON_CBN_SELCHANGE(IDC_CBQUERY, OnSelchangeCbquery)
ON_EN_CHANGE(IDC_EDITADDR, OnChangeEditaddr)
ON_EN_CHANGE(IDC_EDITNAME, OnChangeEditname)
ON_EN_CHANGE(IDC_EDITTEL, OnChangeEdittel)
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DTPICKERBIRTH, OnDatetimechangeDtpickerbirth)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CProgram79View construction/destruction
CProgram79View::CProgram79View()
: CFormView(CProgram79View::IDD)
{
//{{AFX_DATA_INIT(CProgram79View)
m_Address = _T("");
m_Name = _T("");
m_Tel = _T("");
m_Birth = 0;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CProgram79View::~CProgram79View()
{
}
void CProgram79View::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CProgram79View)
DDX_Control(pDX, IDC_CBQUERY, m_ctlQuery);
DDX_Text(pDX, IDC_EDITADDR, m_Address);
DDX_Text(pDX, IDC_EDITNAME, m_Name);
DDX_Text(pDX, IDC_EDITTEL, m_Tel);
DDX_DateTimeCtrl(pDX, IDC_DTPICKERBIRTH, m_Birth);
//}}AFX_DATA_MAP
}
BOOL CProgram79View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CProgram79View::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
CProgram79Doc * pDoc=GetDocument(); //获取文档指针
m_listAddr=&(pDoc->m_listAddr); //获取列表对象
m_pos=m_listAddr->GetHeadPosition(); //获取列表头指针
//获取列表第一个元素
CAddrlist * pAddrDoc=(CAddrlist * )m_listAddr->GetAt(m_pos);
//为对话框控件变量赋值
m_Name=pAddrDoc->Name;
m_Tel=pAddrDoc->Tel;
m_Address=pAddrDoc->Address;
m_Birth=pAddrDoc->Birth;
UpdateData(FALSE);//更新对话框控件
//将焦点设置在姓名控件上
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
}
/////////////////////////////////////////////////////////////////////////////
// CProgram79View printing
BOOL CProgram79View::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CProgram79View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CProgram79View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CProgram79View::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
}
/////////////////////////////////////////////////////////////////////////////
// CProgram79View diagnostics
#ifdef _DEBUG
void CProgram79View::AssertValid() const
{
CFormView::AssertValid();
}
void CProgram79View::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CProgram79Doc* CProgram79View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CProgram79Doc)));
return (CProgram79Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CProgram79View message handlers
void CProgram79View::OnButadd()
{
// TODO: Add your control notification handler code here
if(m_Name=="") //确定记录的姓名不能为空
{
MessageBox("姓名不能为空!");
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
return;
}
//创建新的列表元素
CAddrlist * pAddrDoc=new CAddrlist;
m_Name=pAddrDoc->Name;
m_Tel=pAddrDoc->Tel;
m_Address=pAddrDoc->Address;
m_Birth=pAddrDoc->Birth;
UpdateData(FALSE);
//将新元素添加到列表并获取在列表中的位置
m_pos=m_listAddr->AddTail(pAddrDoc);
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
}
void CProgram79View::OnButdel()
{
int flag; //存储消息对话框的返回值
CObject * pOld=m_listAddr->GetAt(m_pos);//获取当前元素指针
int listCount=m_listAddr->GetCount(); //统计列表元素总数
flag=MessageBox("删除当前记录?","提示",MB_YESNO);
if(IDYES==flag)
{
if(listCount>1)
{
m_listAddr->RemoveAt(m_pos);//从列表中移除元素
delete pOld; //销毁元素
CProgram79Doc * pDoc=GetDocument();
pDoc->SetModifiedFlag(); //设置修改标志
OnInitialUpdate();
}
else
{ //如果列表中只有表头元素,则清空该元素内容
m_Name="";
m_Tel="";
m_Birth=CTime::GetCurrentTime();
m_Address="";
CProgram79Doc * pDoc=GetDocument();
CAddrlist *pAddrDoc=(CAddrlist * )m_listAddr->GetAt(m_pos);
pAddrDoc->Name=m_Name;
pAddrDoc->Address=m_Address;
pAddrDoc->Tel=m_Tel;
pAddrDoc->Birth=m_Birth;
pDoc->SetModifiedFlag(); //设置修改标志
}
UpdateData(FALSE);
}
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
}
void CProgram79View::OnButnext()
{
if(m_Name=="")
{
MessageBox("姓名不能为空!");
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
return;
}
if(m_pos!=m_listAddr->GetTailPosition())//判断是否已到列表尾位置
{
if(m_listAddr->GetNext(m_pos)!=NULL)//获取列表下一元素位置
{ CAddrlist * pAddrDoc=(CAddrlist * ) m_listAddr->GetAt(m_pos);
m_Name=pAddrDoc->Name;
m_Tel=pAddrDoc->Tel;
m_Address=pAddrDoc->Address;
m_Birth=pAddrDoc->Birth;
UpdateData(FALSE);
}
else
MessageBox("已到尾记录!","提示",MB_ICONWARNING);
}
else
MessageBox("已到尾记录!","提示",MB_ICONWARNING);
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
}
void CProgram79View::OnButprv()
{
if(m_Name=="")
{
MessageBox("姓名不能为空!");
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
return;
}
if(m_pos!=m_listAddr->GetHeadPosition())//判断是否已到表头
{ if(m_listAddr->GetPrev(m_pos)!=NULL)//获取前一元素位置
{
CAddrlist * pAddrDoc=(CAddrlist * ) m_listAddr->GetAt(m_pos);
m_Name=pAddrDoc->Name;
m_Tel=pAddrDoc->Tel;
m_Address=pAddrDoc->Address;
m_Birth=pAddrDoc->Birth;
UpdateData(FALSE);
}
else
MessageBox("已到首记录!","提示",MB_ICONWARNING);
}
else
MessageBox("已到首记录!","提示",MB_ICONWARNING);
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
}
void CProgram79View::OnButquery()
{
POSITION postemp; //记录临时位置
CAddrlist * pAddrDoc;
if(!(m_listAddr->IsEmpty())) //判断列表是否为空
{
postemp=m_listAddr->GetHeadPosition();//取得表头位置
while(postemp!=NULL) //如果没到表尾
{
pAddrDoc=(CAddrlist * )m_listAddr->GetAt(postemp);
if(m_strQuery==pAddrDoc->Name )//判断姓名是否相等
{ //显示找到的记录
m_Name=pAddrDoc->Name;
m_Tel=pAddrDoc->Tel;
m_Address=pAddrDoc->Address;
m_Birth=pAddrDoc->Birth;
m_pos=postemp;
UpdateData(FALSE);
break;
}
m_listAddr->GetNext(postemp);//向后移动位置
}
if(postemp==NULL) //如果已到表尾
{
MessageBox("没有符合条件的记录!");
//恢复到查询前的记录
pAddrDoc=(CAddrlist * )m_listAddr->GetAt(m_pos);
m_Name=pAddrDoc->Name;
m_Tel=pAddrDoc->Tel;
m_Address=pAddrDoc->Address;
m_Birth=pAddrDoc->Birth;
UpdateData(FALSE);
}
}
else
MessageBox("此文档为空!");
((CDialog *)this)->GotoDlgCtrl(GetDlgItem(IDC_EDITNAME));
}
void CProgram79View::OnButtotal()
{
CString str;
str.Format("共计%d条记录。",m_listAddr->GetCount());
MessageBox(str);
}
void CProgram79View::OnSetfocusCbquery()
{
POSITION postemp; //记录临时位置
CAddrlist * pAddrDoc;
m_ctlQuery.ResetContent();//清空组合框内容
if(!(m_listAddr->IsEmpty()))//判断列表不为空
{
postemp=m_listAddr->GetHeadPosition();//取得表头位置
while(postemp!=NULL) //如果未到表尾
{ //增加当前记录的姓名到组合框
pAddrDoc=(CAddrlist * )m_listAddr->GetAt(postemp);
m_ctlQuery.AddString(pAddrDoc->Name);
m_listAddr->GetNext(postemp);//取得下一记录位置
}
}
else
MessageBox("此文档为空!");
UpdateData(FALSE);
}
void CProgram79View::OnSelchangeCbquery()
{ //取得组合框所选择记录的姓名
m_ctlQuery.GetLBText(m_ctlQuery.GetCurSel(),m_strQuery);
}
void CProgram79View::OnChangeEditaddr()
{
UpdateData(TRUE);
CProgram79Doc * pDoc=GetDocument();
CAddrlist *pAddrDoc=(CAddrlist * )m_listAddr->GetAt(m_pos);
pAddrDoc->Address=m_Address;
pDoc->SetModifiedFlag();
}
void CProgram79View::OnChangeEditname()
{
UpdateData(TRUE);
CProgram79Doc * pDoc=GetDocument();
CAddrlist *pAddrDoc=(CAddrlist * )m_listAddr->GetAt(m_pos);
pAddrDoc->Name=m_Name;
pDoc->SetModifiedFlag();
}
void CProgram79View::OnChangeEdittel()
{
UpdateData(TRUE);
CProgram79Doc * pDoc=GetDocument();
CAddrlist *pAddrDoc=(CAddrlist * )m_listAddr->GetAt(m_pos);
pAddrDoc->Tel=m_Tel;
pDoc->SetModifiedFlag();
}
void CProgram79View::OnDatetimechangeDtpickerbirth(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(TRUE);
CProgram79Doc * pDoc=GetDocument();
CAddrlist * pAddrDoc=(CAddrlist * )m_listAddr->GetAt(m_pos);
pAddrDoc->Birth=m_Birth;
pDoc->SetModifiedFlag();
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -