📄 setsheet.cpp
字号:
// SetSheet.cpp : 实现文件
//
#include "stdafx.h"
#include "SMS.h"
#include "SMSDlg.h"
#include "SetSheet.h"
// CSetSheet
IMPLEMENT_DYNAMIC(CSetSheet, CPropertySheet)
CSetSheet::CSetSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
,m_pUserSet(&theApp.m_db)
{
AddPage(&m_pSystemSetPage);
AddPage(&m_pUserSetPage);
m_backcolor=m_RGB_BkColor;
m_brush.CreateSolidBrush(m_backcolor);
}
CSetSheet::CSetSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
,m_pUserSet(&theApp.m_db)
{
AddPage(&m_pSystemSetPage);
AddPage(&m_pUserSetPage);
m_backcolor=m_RGB_BkColor;
m_brush.CreateSolidBrush(m_backcolor);
}
CSetSheet::~CSetSheet()
{
}
BEGIN_MESSAGE_MAP(CSetSheet, CPropertySheet)
ON_BN_CLICKED (ID_APPLY_NOW, OnApply)
ON_BN_CLICKED (IDHELP, OnHelp)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// CSetSheet 消息处理程序
void CSetSheet::OnApply ()
{
GetActivePage ()->UpdateData (TRUE);
SETALL all;
all.m_sNewId =m_pUserSetPage.m_sNewId ;
all.m_sNewName =m_pUserSetPage.m_sNewName ;
all.m_sNewPw1 =m_pUserSetPage.m_sNewPw1 ;
all.m_sNewPw2 =m_pUserSetPage.m_sNewPw2 ;
all.m_sOldPw =m_pUserSetPage.m_sOldPw ;
all.m_iTerm=m_pSystemSetPage.m_iTerm ;
all.m_bAutoRun=m_pSystemSetPage.m_bAutoRun ;
all.m_iRunBell=m_pSystemSetPage.m_iRunBell ;
all.m_iExitBell =m_pSystemSetPage.m_iExitBell ;
all.m_sRunbellUserMode =m_pSystemSetPage.m_sRunbellUserMode ;
all.m_sExitbellUserMode =m_pSystemSetPage.m_sExitbellUserMode ;
all.m_iSystemStyle =m_pSystemSetPage.m_iSystemStyle ;
all.m_iTipTime=m_pSystemSetPage.m_iTipTime;
//如果是用户帐户设置改变
if(GetActivePage()==&m_pUserSetPage)
{
CString OldPw;
if(m_pUserSet.IsOpen ())
m_pUserSet.Close ();
m_pUserSet.Open ();
m_pUserSet.MoveFirst ();
OldPw=m_pUserSet.m_uPassword ;
m_pUserSet.Close ();//最好现在关闭,待会成功了在连接
//保存用户帐户信息,关系到保密性,故必须是用户自身才有权利修改
if(all.m_sOldPw !=OldPw)//旧密码不正确,不可以修改!
{
MessageBox(L"旧密码输入不正确,请输入正确的旧密码!",L"错误",MB_ICONSTOP);
return ;
}
//再次要确认两次的新密码是否相同
if(all.m_sNewPw1 !=all.m_sNewPw2 )
{
MessageBox(L"两次密码不相符,请确认密码!",L"错误",MB_ICONSTOP);
return ;
}
if(m_pUserSet.IsOpen ())
m_pUserSet.Close ();
m_pUserSet.Open ();
m_pUserSet.MoveFirst ();
m_pUserSet.Edit ();
m_pUserSet.m_uId =all.m_sNewId ;
m_pUserSet.m_uName =all.m_sNewName ;
m_pUserSet.m_uPassword =all.m_sNewPw1 ;
m_pUserSet.Update ();
m_pUserSet.MoveLast ();
m_pUserSet.Close ();
}
if(GetActivePage()==&m_pSystemSetPage)
{
//先登记系统设置的,先保存学期信息
if(m_pUserSet.IsOpen ())
m_pUserSet.Close ();
m_pUserSet.Open ();
m_pUserSet.MoveFirst ();
m_pUserSet.Edit ();
m_pUserSet.m_uTerm =all.m_iTerm ;
m_pUserSet.m_uRunBell =all.m_sRunbellUserMode ;
m_pUserSet.m_uExitBell =all.m_sExitbellUserMode ;
m_pUserSet.Update ();
m_pUserSet.MoveLast ();
m_pUserSet.Close ();
//再通过全局变量保存其他信息
m_iSystemStyle=all.m_iSystemStyle ;
m_bAutoRun=all.m_bAutoRun ;
m_iRunBell=all.m_iRunBell ;
m_iExitBell=all.m_iExitBell ;
m_iTerm=all.m_iTerm ;
m_iTipTime=all.m_iTipTime *5+5;
//下面这一招用的很棒!!!巧妙地实现了重起!!!
//并且还可以逃过登录对话框!Power的独创!
if(m_bAutoRun)//通过注册表开机自动运行
{
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
SetAutoRun(sPath);
}
else//否则删除注册表
{
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
DeleteAutoRun(sPath);
}
WinExec(LPCSTR("SMS.exe"),NULL);//启动另一个程序
//发消息告诉主窗口,要“重起”了,其实只是把它巧妙的关闭
GetParent ()->SendMessage(WM_USER_REBOOT);//
PostMessage(WM_CLOSE);//设置对话框自己再关闭
return ;
}
//立即更新!
Invalidate();
UpdateWindow();
m_pUserSetPage.SetModified (false);
m_pSystemSetPage.SetModified (false);
}
HBRUSH CSetSheet::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertySheet::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何属性
if(m_bColor)//如果用系统的,则直接返回
return hbr;
pDC->SetTextColor (m_RGB_CtrlColor);
pDC->SetBkMode(BKMODE_LAST);pDC->SetBkColor (m_RGB_BkColor);
return (HBRUSH)m_brush.GetSafeHandle ();
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
// return hbr;
}
void CSetSheet::HtmlHelp(DWORD_PTR dwData, UINT nCmd)
{
// TODO: 在此添加专用代码和/或调用基类
CPropertySheet::HtmlHelp(dwData, nCmd);
}
BOOL CSetSheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
// TODO: 在此添加您的专用代码
// CWnd *pWnd = GetDlgItem (IDHELP);
// pWnd->ShowWindow (FALSE);
return bResult;
}
void CSetSheet::WinHelp(DWORD dwData, UINT nCmd)
{
// TODO: 在此添加专用代码和/或调用基类
// HWND handle=0;
// ShellExecuteW(handle, _T("open"), _T("SMS.chm"), NULL, NULL, SW_SHOWNORMAL);
CPropertySheet::WinHelp(dwData, nCmd);
}
void CSetSheet::OnHelp ()
{
HWND handle=0;
ShellExecuteW(handle, _T("open"), _T("SMS.chm"), NULL, NULL, SW_SHOWNORMAL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -