📄 smsdlg.cpp
字号:
// SMSDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "SMS.h"
#include "SMSDlg.h"
#include "StdLib.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//CAboutDlg对话框的实现
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
m_backcolor=m_RGB_BkColor;
m_brush.CreateSolidBrush(m_backcolor);
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::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;
}
// CSMSDlg 对话框
CSMSDlg::CSMSDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSMSDlg::IDD, pParent)
, m_pLogionSet(&theApp.m_db )
, m_pCalendaSet(&theApp.m_db )
, m_pRemindSet(&theApp.m_db )
, m_pUserSet(&theApp.m_db )
{
ntipNum=0;
RemindAmount=0;
m_pStudyDlg=NULL;
m_pWorkDlg=NULL;
m_pFinanceMainDlg=NULL;
m_pSocialiseDlg=NULL;
m_pSetRemindDlg=NULL;
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
//显示窗口颜色
m_backcolor=m_RGB_BkColor;
m_brush.CreateSolidBrush(m_backcolor);
}
void CSMSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STUDY_BT, m_Study_Bt);
DDX_Control(pDX, IDC_WORK_BT, m_Work_Bt);
DDX_Control(pDX, IDC_SOCIALISE_BT, m_Socialise_Bt);
DDX_Control(pDX, IDC_FINANCE_BT, m_Finance_Bt);
DDX_Control(pDX, IDC_ENTERTAIN_BT, m_Entertain_Bt);
DDX_Control(pDX, IDC_REMIND_BT, m_Remind_Bt);
DDX_Control(pDX, IDC_SET_BT, m_Set_Bt);
DDX_Control(pDX, IDC_INFO_LIST, m_cInfoListCtrl);
}
BEGIN_MESSAGE_MAP(CSMSDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_WM_TIMER ()
ON_WM_SIZE()
ON_WM_SIZING()
ON_BN_CLICKED(IDC_STUDY_BT, &CSMSDlg::OnBnClickedStudyBt)
ON_BN_CLICKED(IDC_FINANCE_BT,&CSMSDlg::OnBnClickedFinanceBt )
ON_BN_CLICKED(IDC_SOCIALISE_BT,&CSMSDlg::OnBnClickedSocialiseBt)
ON_BN_CLICKED(IDC_WORK_BT, &CSMSDlg::OnBnClickedWorkBt )
ON_BN_CLICKED(IDC_SET_BT, &CSMSDlg::OnBnClickedSetBt )
ON_BN_CLICKED(IDC_REMIND_BT,&CSMSDlg::OnBnClickedRemindBt )
ON_BN_CLICKED(IDC_ENTERTAIN_BT, &CSMSDlg::OnBnClickedEntertainBt )
ON_WM_CREATE()
ON_WM_CLOSE()
ON_NOTIFY(HDN_ITEMCLICK, 0, &CSMSDlg::OnHdnItemclickSocialisePersonList)
ON_MESSAGE (WM_USER_STUDYDLG_DESTROYED, OnStudyDlgDestroyed)
ON_MESSAGE (WM_USER_WORKDLG_DESTROYED, OnWorkDlgDestroyed)
ON_MESSAGE (WM_USER_SOCIALISEDLG_DESTROYED, OnSocialiseDlgDestroyed)
ON_MESSAGE (WM_USER_FINANCEMAINDLG_DESTROYED, OnFinanceMainDlgDestroyed)
ON_MESSAGE (WM_USER_SETREMINDDLG_DESTROYED,OnSetRemindDlgDestroyed)
ON_MESSAGE (WM_USER_REBOOT,&CSMSDlg::OnExit)
ON_WM_CTLCOLOR()
ON_COMMAND(ID_POP_STUDY, &CSMSDlg::OnPopStudy)
ON_COMMAND(ID_POP_WORK, &CSMSDlg::OnPopWork)
ON_COMMAND(ID_POP_SOCIALISE, &CSMSDlg::OnPopSocialise)
ON_COMMAND(ID_POP_FINANCE, &CSMSDlg::OnPopFinance)
ON_COMMAND(ID_POP_ENTERTAIN, &CSMSDlg::OnPopEntertain)
ON_COMMAND(ID_POP_REMIND, &CSMSDlg::OnPopRemind)
ON_COMMAND(ID_POP_SET, &CSMSDlg::OnPopSet)
ON_COMMAND(ID_POP_EXIT, &CSMSDlg::OnPopExit)
ON_COMMAND(ID_MAIN_ABOUT, &CSMSDlg::OnMainAbout)
ON_WM_CONTEXTMENU()
ON_WM_ENDSESSION ()
ON_BN_CLICKED(IDC_REMIND_BT, &CSMSDlg::OnBnClickedRemindBt)
ON_COMMAND(ID_WINDOWS_CAL, &CSMSDlg::OnWindowsCal)
END_MESSAGE_MAP()
//下面是easysize的消息队列
BEGIN_EASYSIZE_MAP(CSMSDlg)
EASYSIZE(IDC_WELCOME_STATIC,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_TODAY_STATIC,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_TODAY_DTP,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_MOTTO_STATIC,ES_KEEPSIZE,ES_BORDER,ES_BORDER,ES_KEEPSIZE,0)
EASYSIZE(IDC_PICTURE_LOGION_STATIC,ES_KEEPSIZE,ES_BORDER,ES_BORDER,ES_KEEPSIZE,0)
EASYSIZE(IDC_LOGION_STATIC,ES_KEEPSIZE,ES_BORDER,ES_BORDER,ES_KEEPSIZE,0)
EASYSIZE(IDC_STUDY_BT,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_WORK_BT,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_SOCIALISE_BT,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_ENTERTAIN_BT,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_FINANCE_BT,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_SET_BT,ES_BORDER,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,0)
EASYSIZE(IDC_INFO_STATIC,ES_BORDER,ES_BORDER,ES_BORDER,ES_BORDER,0)
EASYSIZE(IDC_INFO_LIST,ES_BORDER,ES_BORDER,ES_BORDER,ES_BORDER,0)
EASYSIZE(IDC_PICTURE_STATIC,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,ES_BORDER,0)
EASYSIZE(IDC_COPYRIGHT_STATIC,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,ES_BORDER,0)
END_EASYSIZE_MAP
// CSMSDlg 消息处理程序
BOOL CSMSDlg::OnInitDialog()
{
CDialog::OnInitDialog();
BeginWaitCursor();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
// TODO: 在此添加额外的初始化代码
//从注册表中读出是否真的重启
CString version=L"Version 1.0";//软件版本
//要重新启动的时候只要把注册表修改便可!第一次运行,默认为false!
if(!theApp.GetProfileInt (version,L"Reboot",false))
{
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind('\\');
sPath=sPath.Left (nPos);
CString lpszFile = sPath + L"\\铃声\\";
if(LoginDlg.DoModal()==IDOK)
{
//成功登陆
switch(m_iRunBell)
{
case 0://无,则跳出
break;
case 1://自定义的
PlaySound(LoginDlg.m_sRunBell, NULL,SND_ASYNC);
break;
case 2://系统带的
lpszFile+=L"Bell_1.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 3://系统带的
lpszFile+=L"Bell_2.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 4://系统带的
lpszFile+=L"Bell_3.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 5://系统带的
lpszFile+=L"Bell_4.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 6://系统带的
lpszFile+=L"Bell_5.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 7://系统带的
lpszFile+=L"Bell_6.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 8://系统带的
lpszFile+=L"Bell_7.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 9://系统带的
lpszFile+=L"Bell_8.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
case 10://系统带的
lpszFile+=L"Bell_9.wav";
PlaySound(lpszFile, NULL, SND_ASYNC);
break;
}
}
else
{
PostMessage(WM_CLOSE);
return TRUE;
}
}
SetTimer(SMS_TIME_TIMER, 1000, NULL);//设置定时期,每一秒更新一次,用于更新系统时钟和欢迎信息
SetTimer(SMS_LOGION_TIMER,10000,NULL);//设置定时期,每十秒更新一次,用于轮流显示名言
if(m_iTipTime>=10)//小于10则不用提醒
SetTimer(SMS_TIP_TIMER,m_iTipTime*2000,NULL);//设置定时器用于提示
//
//****************************************************************************//
//
//下面的操作很耗内存及时间,最好开后台线程来实现,暂且先用界面线程处理一下,待以后再用后台线程
//下面显示欢迎信息
CString StrRunBell;
CString StrWelcome;
CString StrTime;
CTime tTime;
int Hour;
if(m_pUserSet.IsOpen())
m_pUserSet.Close();
m_pUserSet.Open(AFX_DB_USE_DEFAULT_TYPE,L"Select * From User Order By uId");
m_pUserSet.MoveFirst();
m_sUserName=m_pUserSet.m_uName;
m_pUserSet.Close();
tTime=CTime::GetCurrentTime();
Hour=tTime.GetHour();
if(Hour<=8)
StrWelcome=m_sUserName+L",早上好!欢迎使用学生管理软件!";
else
if(Hour>8&&Hour<=12)
StrWelcome=m_sUserName+L",上午好!欢迎使用学生管理软件!";
else
if(Hour>12&&Hour<=18)
StrWelcome=m_sUserName+L",下午好!欢迎使用学生管理软件!";
else
StrWelcome=m_sUserName+L",晚上好!欢迎使用学生管理软件!";
SetDlgItemText(IDC_WELCOME_STATIC, StrWelcome);
//下面首次设置时间, 这样做是为了不存在开始启动的闪烁
StrTime.Format(L"现在时间 %02i:%02i:%02i",tTime.GetHour(),tTime.GetMinute(),tTime.GetSecond());
SetDlgItemText(IDC_TIME_TIP_STATIC, StrTime);
//下面显示名言
CString StrLogion;
if(m_pLogionSet.IsOpen())
m_pLogionSet.Close();
m_pLogionSet.Open(AFX_DB_USE_DEFAULT_TYPE,L"Select * From Logion Order By lKind");
int Count;
m_pLogionSet.m_strFilter .Empty ();
Count=m_pLogionSet.GetRecordCount();
if(Count==0)//如果没有名言
{
m_pLogionSet.Close ();
}
else//否则随机选择显示
{
Count=0;
m_pLogionSet.MoveFirst();
while(!m_pLogionSet.IsEOF())
{
m_pLogionSet.MoveNext();
Count++;//先计算总数
}
m_pLogionSet.MoveFirst();//再跳回到第一个
srand((unsigned) time(NULL));
int rth=rand()%Count;//随机找到那个
int i=0;
while(!m_pLogionSet.IsEOF())
{
if(i==rth)//随机取一个
{
StrLogion=m_pLogionSet.m_lContent;//直接复制,并且退出循环
break;
}
i++;
m_pLogionSet.MoveNext();
}
m_pLogionSet.Close();
}
SetDlgItemText(IDC_MOTTO_STATIC,StrLogion);
//下面显示今日信息
//先设置标题
m_cInfoListCtrl.SetExtendedStyle (LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_cInfoListCtrl.InsertColumn (0,L"主题",LVCFMT_IMAGE|LVCFMT_LEFT);
m_cInfoListCtrl.SetColumnWidth(0,63);
m_cInfoListCtrl.InsertColumn (1,L"内容");
m_cInfoListCtrl.SetColumnWidth(1,1100);
//下面先处理日程的信息
CString StrStartDate;
CString StrEndDate;
CString StrCalendaInfo;
if(m_pCalendaSet.IsOpen())
m_pCalendaSet.Close();
m_pCalendaSet.Open(AFX_DB_USE_DEFAULT_TYPE,L"Select * From Calenda Order By cStartDate");
if(m_pCalendaSet.GetRecordCount()==0)//若日程为空,则跳过
m_pCalendaSet.Close();
else
{
StrTime=DateToString(tTime);
m_pCalendaSet.MoveFirst();
while(!m_pCalendaSet.IsEOF())
{
StrStartDate=DateToString(m_pCalendaSet.m_cStartDate);
StrEndDate=DateToString(m_pCalendaSet.m_cEndDate);
if(StrStartDate<=StrTime&&StrEndDate>=StrTime)//若该日程在这天当中,则显示
{
m_cInfoListCtrl.InsertItem(0,L"日程" ,0);
StrCalendaInfo=L"今天,您有日程,名称为:";
StrCalendaInfo+=m_pCalendaSet.m_cName;
if(m_pCalendaSet.m_cCharge!=L"")
{
StrCalendaInfo+=L",负责人为:";
StrCalendaInfo+=m_pCalendaSet.m_cCharge;
}
if(m_pCalendaSet.m_cTeamName!=L"")
{
StrCalendaInfo+=L",所属团体为:";
StrCalendaInfo+=m_pCalendaSet.m_cTeamName;
}
m_cInfoListCtrl.SetItemText (0,1,StrCalendaInfo);
}
m_pCalendaSet.MoveNext();
}
m_pCalendaSet.Close();
}
//下面处理提醒信息
CString StrRemindInfo;
if(m_pRemindSet.IsOpen())
m_pRemindSet.Close();
m_pRemindSet.Open(AFX_DB_USE_DEFAULT_TYPE,L"Select * From Remind Order By rStartDate");
if(m_pRemindSet.GetRecordCount()==0)//若提醒为空,则跳过
m_pRemindSet.Close();
else
{
StrTime=DateToString(tTime);
m_pRemindSet.MoveFirst();
while(!m_pRemindSet.IsEOF())
{
if(m_pRemindSet.m_rFinished==true)//若完成了提醒,则不需要再提醒
{
m_pRemindSet.MoveNext();
continue;
}
StrStartDate=DateToString(m_pRemindSet.m_rStartDate);
StrEndDate=DateToString(m_pRemindSet.m_rEndDate);
if(StrStartDate<=StrTime&&StrEndDate>=StrTime)//若该提醒在这天当中,则显示
{
RemindAmount++;
m_cInfoListCtrl.InsertItem(0,L"提醒" ,0);
StrRemindInfo=L"内容:";
StrRemindInfo+=m_pRemindSet.m_rContent;
if(m_pRemindSet.m_rKind!=L"")
{
StrRemindInfo+=L"; 类型:";
StrRemindInfo+=m_pRemindSet.m_rKind;
}
m_cInfoListCtrl.SetItemText (0,1,StrRemindInfo);
}
m_pRemindSet.MoveNext();
}
m_pRemindSet.Close();
}
//
//耗时耗内存的信息处理总算完成了。。。。。
//
//
INIT_EASYSIZE;
menu.LoadMenu(IDR_MAIN_MENU);
SetMenu(&menu);
EndWaitCursor();
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CSMSDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -