datetestforbldlg.cpp
来自「基于蓝牙设备的电话本设计,基于wince5.0标准sdk vs2005」· C++ 代码 · 共 437 行
CPP
437 行
// DateTestForBLDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "DateTestForBL.h"
#include "DateTestForBLDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CDateTestForBLDlg 对话框
CDateTestForBLDlg::CDateTestForBLDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDateTestForBLDlg::IDD, pParent)
, m_PhoneNum(_T(""))
, m_Time(_T(""))
, m_showtime(_T(""))
, m_timeshow(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CDateTestForBLDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_PhoneNum, m_PhoneNum);
DDX_Text(pDX, IDC_Time, m_Time);
DDX_Text(pDX, IDC_ShowTime, m_showtime);
DDX_Text(pDX, IDC_TIMESHOW, m_timeshow);
}
BEGIN_MESSAGE_MAP(CDateTestForBLDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_First, &CDateTestForBLDlg::OnFirst)
ON_BN_CLICKED(IDC_Pre, &CDateTestForBLDlg::OnBnClickedPre)
ON_BN_CLICKED(IDC_Next, &CDateTestForBLDlg::OnBnClickedNext)
ON_BN_CLICKED(IDC_End, &CDateTestForBLDlg::OnBnClickedEnd)
ON_BN_CLICKED(IDC_Add, &CDateTestForBLDlg::OnBnClickedAdd)
ON_BN_CLICKED(IDC_Edit, &CDateTestForBLDlg::OnBnClickedEdit)
ON_BN_CLICKED(IDC_Reflash, &CDateTestForBLDlg::OnBnClickedReflash)
ON_BN_CLICKED(IDC_Save, &CDateTestForBLDlg::OnBnClickedSave)
ON_BN_CLICKED(IDC_Dele, &CDateTestForBLDlg::OnBnClickedDele)
ON_WM_TIMER()
ON_EN_SETFOCUS(IDC_Time, &CDateTestForBLDlg::OnEnSetfocusTime)
END_MESSAGE_MAP()
// CDateTestForBLDlg 消息处理程序
BOOL CDateTestForBLDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
//装载学生表到m_lstStudent队列
CFile PhoneFile;
CPhoneNumData PhoneData;
DWORD dwRead;
//如果数据文件存在,就读取
ZeroMemory(&PhoneData,sizeof(PhoneData));
if (PhoneFile.Open(PHONEFILEPATH,CFile::modeRead))
{
do
{
dwRead = PhoneFile.Read(&PhoneData,sizeof(PhoneData));
if (dwRead != 0 )
{
m_lstPhoneNum.AddTail(PhoneData);
}
}while(dwRead > 0);
//关闭数据文件
PhoneFile.Close();
}
else //创建文件
{
if (!PhoneFile.Open(PHONEFILEPATH,CFile::modeCreate|CFile::modeWrite))
{
AfxMessageBox(_T("datebase false"));
return FALSE;
}
PhoneFile.Close();
}
//初始化界面显示
if (m_lstPhoneNum.GetCount() > 0)
{
PhoneData = m_lstPhoneNum.GetHead();
m_iCurPos = 0;
//初始划第一条显示
m_PhoneNum = PhoneData.PhoneNum;
m_Time = PhoneData.CallTime;
UpdateData(false);
}
SetControlEnable(FALSE);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
SetTimer(1,1000,NULL);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CDateTestForBLDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
if (AfxIsDRAEnabled())
{
DRA::RelayoutDialog(
AfxGetResourceHandle(),
this->m_hWnd,
DRA::GetDisplayMode() != DRA::Portrait ?
MAKEINTRESOURCE(IDD_DATETESTFORBL_DIALOG_WIDE) :
MAKEINTRESOURCE(IDD_DATETESTFORBL_DIALOG));
}
}
#endif
void CDateTestForBLDlg::SetControlEnable(bool aValue)
{
/*设置输入框的有效性*/
// ((CEdit*)GetDlgItem(IDC_XSXM))->EnableWindow(aValue);
// ((CEdit*)GetDlgItem(IDC_XSXB))->EnableWindow(aValue);
((CEdit*)GetDlgItem(IDC_PhoneNum))->EnableWindow(aValue);
((CEdit*)GetDlgItem(IDC_Time))->EnableWindow(aValue);
/*设置指针移动按钮的有效性*/
((CButton*)GetDlgItem(IDC_First))->EnableWindow(!aValue);
((CButton*)GetDlgItem(IDC_Pre))->EnableWindow(!aValue);
((CButton*)GetDlgItem(IDC_Next))->EnableWindow(!aValue);
((CButton*)GetDlgItem(IDC_End))->EnableWindow(!aValue);
/*设置操作按钮的有效性*/
((CButton*)GetDlgItem(IDC_Add))->EnableWindow(!aValue);
((CButton*)GetDlgItem(IDC_Edit))->EnableWindow(!aValue);
((CButton*)GetDlgItem(IDC_Reflash))->EnableWindow(aValue);
((CButton*)GetDlgItem(IDC_Save))->EnableWindow(aValue);
((CButton*)GetDlgItem(IDC_Dele))->EnableWindow(!aValue);
}
void CDateTestForBLDlg::SetNavigatorButton(int aValue)
{
//如果学生队列数据小于2
if (m_lstPhoneNum.GetCount() < 2)
{
((CButton*)GetDlgItem(IDC_First))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_Pre))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_Next))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_End))->EnableWindow(FALSE);
return;
}
//指针移到首部
if (aValue == 0)
{
((CButton*)GetDlgItem(IDC_First))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_Pre))->EnableWindow(FALSE);
if (m_lstPhoneNum.GetCount() >=2)
{
((CButton*)GetDlgItem(IDC_Next))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_End))->EnableWindow(TRUE);
}
}//如果指针移到末尾
else if (aValue == m_lstPhoneNum.GetCount() - 1)
{
((CButton*)GetDlgItem(IDC_Next))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_End))->EnableWindow(FALSE);
if (m_lstPhoneNum.GetCount() >=2)
{
((CButton*)GetDlgItem(IDC_First))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_Pre))->EnableWindow(TRUE);
}
}
else
{
((CButton*)GetDlgItem(IDC_First))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_Pre))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_Next))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_End))->EnableWindow(TRUE);
}
}
void CDateTestForBLDlg::OnFirst()
{
// TODO: 在此添加控件通知处理程序代码
CPhoneNumData PhoneData = m_lstPhoneNum.GetHead();
m_iCurPos = 0;
//更新显示
m_PhoneNum = PhoneData.PhoneNum;
m_Time = PhoneData.CallTime;
//m_xsxb = studentData.xb;
//m_csqq = studentData.csrq;
//m_bjmc = studentData.bjmc;
UpdateData(false);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
}
void CDateTestForBLDlg::OnBnClickedPre()
{
// TODO: 在此添加控件通知处理程序代码
m_iCurPos--;
POSITION pos = m_lstPhoneNum.FindIndex(m_iCurPos);
CPhoneNumData PhoneData = m_lstPhoneNum.GetAt(pos);
//更新显示
m_PhoneNum = PhoneData.PhoneNum;
m_Time = PhoneData.CallTime;
UpdateData(false);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
}
void CDateTestForBLDlg::OnBnClickedNext()
{
// TODO: 在此添加控件通知处理程序代码
m_iCurPos++;
POSITION pos = m_lstPhoneNum.FindIndex(m_iCurPos);
CPhoneNumData PhoneData = m_lstPhoneNum.GetAt(pos);
//更新显示
m_PhoneNum = PhoneData.PhoneNum;
m_Time = PhoneData.CallTime;
UpdateData(false);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
}
void CDateTestForBLDlg::OnBnClickedEnd()
{
// TODO: 在此添加控件通知处理程序代码
CPhoneNumData PhoneData = m_lstPhoneNum.GetTail();
m_iCurPos = m_lstPhoneNum.GetCount() - 1;
//更新显示
m_PhoneNum = PhoneData.PhoneNum;
m_Time = PhoneData.CallTime;
UpdateData(false);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
}
void CDateTestForBLDlg::OnBnClickedAdd()
{
// TODO: 在此添加控件通知处理程序代码
KillTimer(1);
m_operID = 0 ; //表示添加操作
m_PhoneNum = _T("");
m_Time = m_timeshow;
UpdateData(FALSE);
SetControlEnable(TRUE);
}
void CDateTestForBLDlg::OnBnClickedEdit()
{
// TODO: 在此添加控件通知处理程序代码
if (m_lstPhoneNum.IsEmpty())
{
AfxMessageBox(_T("没有可编辑的记录"));
return;
}
m_operID = 1 ; //表示编辑操作
SetControlEnable(TRUE);
}
void CDateTestForBLDlg::OnBnClickedReflash()
{
// TODO: 在此添加控件通知处理程序代码
POSITION pos = m_lstPhoneNum.FindIndex(m_iCurPos);
CPhoneNumData PhoneData = m_lstPhoneNum.GetAt(pos);
//更新显示
m_PhoneNum = PhoneData.PhoneNum;
m_Time = PhoneData.CallTime;
UpdateData(false);
SetControlEnable(FALSE);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
}
void CDateTestForBLDlg::OnBnClickedSave()
{
// TODO: 在此添加控件通知处理程序代码
CPhoneNumData PhoneData;
CFile PhoneFile;
UpdateData(TRUE);
switch (m_operID )
{
case 0 : /*添加操作*/
{
/*将添加的东西写入文件*/
ZeroMemory(&PhoneData,sizeof(PhoneData));
wcscpy(PhoneData.CallTime,m_Time);
//wcscpy(PhoneData.CallTime,TempTime);
wcscpy(PhoneData.PhoneNum,m_PhoneNum);
PhoneFile.Open(PHONEFILEPATH,CFile::modeRead | CFile::modeWrite);
PhoneFile.SeekToEnd();
PhoneFile.Write(&PhoneData,sizeof(PhoneData));
PhoneFile.Close();
//更新内存队列
m_lstPhoneNum.AddTail(PhoneData);
SetControlEnable(FALSE);
//设置指针移动按钮有效性
m_iCurPos = m_lstPhoneNum.GetCount()-1;
SetNavigatorButton(m_iCurPos);
break;
}
case 1: /*编辑操作*/
{
/*将添加的东西写入文件*/
ZeroMemory(&PhoneData,sizeof(PhoneData));
wcscpy(PhoneData.CallTime,m_Time);
//wcscpy(PhoneData.CallTime,TempTime);
wcscpy(PhoneData.PhoneNum,m_PhoneNum);
PhoneFile.Open(PHONEFILEPATH,CFile::modeRead | CFile::modeWrite);
PhoneFile.Seek(sizeof(PhoneData)*(m_iCurPos) ,CFile::begin);
PhoneFile.Write(&PhoneData,sizeof(PhoneData));
PhoneFile.Close();
//更新内存队列
m_lstPhoneNum.SetAt(m_lstPhoneNum.FindIndex(m_iCurPos),PhoneData);
SetControlEnable(FALSE);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
break;
}
}
SetTimer(1,1000,NULL);
}
void CDateTestForBLDlg::OnBnClickedDele()
{
// TODO: 在此添加控件通知处理程序代码
if (m_lstPhoneNum.IsEmpty())
{
AfxMessageBox(_T("没有可删除的记录"));
return;
}
//先从队列中移除
POSITION pos = m_lstPhoneNum.FindIndex(m_iCurPos);
m_lstPhoneNum.RemoveAt(pos);
if (m_iCurPos != 0)
{
m_iCurPos--;
}
//更新界面显示
if (!m_lstPhoneNum.IsEmpty())
{
pos = m_lstPhoneNum.FindIndex(m_iCurPos);
CPhoneNumData PhoneData = m_lstPhoneNum.GetAt(pos);
//更新显示
m_PhoneNum = PhoneData.PhoneNum;
m_Time = PhoneData.CallTime;
UpdateData(false);
}
else
{
//更新显示
m_PhoneNum =_T("");
m_Time = _T("");
UpdateData(false);
}
SetControlEnable(FALSE);
//设置指针移动按钮有效性
SetNavigatorButton(m_iCurPos);
//将文件重写
CPhoneNumData PhoneData;
CFile PhoneFile;
PhoneFile.Open(PHONEFILEPATH,CFile::modeCreate | CFile::modeWrite);
pos = m_lstPhoneNum.GetHeadPosition();
for (int i=0;i<m_lstPhoneNum.GetCount();i++)
{
ZeroMemory(&PhoneData,sizeof(PhoneData));
PhoneData = m_lstPhoneNum.GetNext(pos);
PhoneFile.Write(&PhoneData,sizeof(PhoneData));
}
PhoneFile.Close();
}
void CDateTestForBLDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
SYSTEMTIME showNowTime;
//获取系统时间类
GetLocalTime(&showNowTime);
//获取本地时间
CString TimeString;
//转换
CString temp,temp1,temp2,str1,str2;
TimeString.Format(_T("%4d%02d%02d%02d%02d%02d")
,showNowTime.wYear
,showNowTime.wMonth
,showNowTime.wDay
,showNowTime.wHour
,showNowTime.wMinute
,showNowTime.wSecond);
//定义时间格式
//当前系统时间准确时间_tandow_2007-10-10_by_MercuryXu
// other.....
this->UpdateData(TRUE);
m_showtime = TimeString;
m_timeshow = TimeString;
//m_Time = TimeString;
this->UpdateData(FALSE);
//return TimeString;
CDialog::OnTimer(nIDEvent);
}
void CDateTestForBLDlg::GetNowTime(void)
{
}
void CDateTestForBLDlg::OnEnSetfocusTime()
{
// TODO: 在此添加控件通知处理程序代码
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?