📄 提醒程序.cpp
字号:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "qwring.h"
#include <time.h>
#define ID_TIMER 1 //时钟句柄
#define ID_TIMERMB 2
#define ID_TIMERDSQ 3
#define IDHK 12
HANDLE hBitmap2,changebmp;
HACCEL hAccelTable; //加速键
//全局变量
WNDCLASSEX wnd;
int i,countyhtx,countjnrtx,countmrdstx,countmzdstx,jnrout[100];//i为提醒数目,其余为每个提醒的数目
int dsqh,dsqm,dsqs;//定时器输入用
int ifhide=1; //1为窗口显示,2为窗口隐藏
char szAppName[] = "tixing";//窗口类名
//函数声明
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;//主窗口
LRESULT CALLBACK mbProc (HWND, UINT, WPARAM, LPARAM) ;//秒表
LRESULT CALLBACK dsqqwProc (HWND, UINT, WPARAM, LPARAM) ;//定时器
BOOL MyRegisterClass(HINSTANCE hInstance);//注册
BOOL InitInstance(HINSTANCE hInstance,int iCmdShow);//创建
//对话框处理函数
LRESULT CALLBACK yhtxproc (HWND, UINT, WPARAM, LPARAM) ;//约会
LRESULT CALLBACK jszcproc (HWND, UINT, WPARAM, LPARAM) ;//计算周次
LRESULT CALLBACK jnrtxproc (HWND, UINT, WPARAM, LPARAM) ;//纪念日
LRESULT CALLBACK mrdstxproc (HWND, UINT, WPARAM, LPARAM) ;//每日定时
LRESULT CALLBACK mzdstxproc (HWND, UINT, WPARAM, LPARAM) ;//每周定时
LRESULT CALLBACK djsproc (HWND, UINT, WPARAM, LPARAM) ;//倒计时
LRESULT CALLBACK rqjsproc (HWND, UINT, WPARAM, LPARAM) ;//日期计算
LRESULT CALLBACK dsqproc (HWND, UINT, WPARAM, LPARAM) ;//定时器
//其它
BOOL mb(); //弹出秒表窗口
BOOL dsq();//弹出定时器窗口
//定义结构体
struct yhtx //约会
{
int month;
int day;
int hour;
int minute;
char note[101];
}yhtx1[100];
struct jnrtx //纪念日
{
int month;
int day;
char note[101];
}jnrtx1[100];
struct mrdstx //每日定时
{
int hour;
int minute;
char note[101];
}mrdstx1[100];
struct mzdstx //每周定时
{
int weekday;
int hour;
int minute;
char note[101];
}mzdstx1[100];
HINSTANCE hIns;
HWND hwn;
//函数:WinMain
//作用:入口函数
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
MSG msg;
hIns=hInstance;
if(!MyRegisterClass(hInstance))
{
return FALSE;
}
if(!InitInstance(hInstance,iCmdShow))
{
return FALSE;
}
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))//判断是否是快捷键
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
//函数:WndProc
//作用:处理主窗口消息
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
FILE *gigi;
static int cxClient, cyClient,j,valuemonth,moretime,qqqw=623;//用于保存客户区范围
static int m1=10,m2=20,m3=30,m4=40,m5=50,m6=60;
static struct tm txtime,jnrtime,dqtime2;
static char not[101],dq[101],asdf[150];
static char *p[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};//用来显示星期
time_t lTime;//用于保存协调通用时间
int y,m,d,hwweeks;
long tatol;
time_t tytimenow,tytimethen;
tm difference;
char qqqq[188];
FILE *fp;//提醒文件
switch (msg)
{
case WM_HOTKEY:
if(ifhide==1)
{
ifhide=2;
ShowWindow(hwnd,SW_HIDE);
return 0;
}
if(ifhide==2)
{
ifhide=1;
ShowWindow(hwnd,SW_SHOWNORMAL);
}
return 0;
case WM_CREATE://处理窗口创建消息
if(fp=fopen("yhtx.qyg","rb"))//读入约会提醒数
{
fseek(fp,-4L,2);
fread(&i,sizeof(int),1,fp);//读入提醒数
countyhtx=i;//赋给该提醒
rewind(fp);//返回文件开头
for(j=0;j<i;j++)
{
fread(&yhtx1[j],sizeof(yhtx),1,fp);//读文件
yhtx1[j].month=~yhtx1[j].month;//解密
yhtx1[j].day=~yhtx1[j].day;
yhtx1[j].hour=~yhtx1[j].hour;
yhtx1[j].minute=~yhtx1[j].minute;
strcpy(not,yhtx1[j].note);
for(int v=0;v<101;v++)
{if(not[v]=='\0')
break;
else
not[v]=~not[v];
}
for(;v<20;v++)
{
not[v]='\0';
}
strcpy(yhtx1[j].note,not);
fseek(fp,4L,1);
}
fclose(fp);//关闭文件
}
if(fp=fopen("jnrtx.qyg","rb"))//读入纪念日文件
{
fseek(fp,-4L,2);
fread(&i,sizeof(int),1,fp);
countjnrtx=i;
rewind(fp);
for(j=0;j<i;j++)
{
fread(&jnrtx1[j],sizeof(jnrtx),1,fp);
jnrtx1[j].month=~jnrtx1[j].month;
jnrtx1[j].day=~jnrtx1[j].day;
strcpy(not,jnrtx1[j].note);
for(int v=0;v<101;v++)
{if(not[v]=='\0')
break;
else
not[v]=~not[v];
}
for(;v<20;v++)
{
not[v]='\0';
}
strcpy(jnrtx1[j].note,not);
fseek(fp,4L,1);
}
fclose(fp);
}
if(fp=fopen("mrdstx.qyg","rb"))//读入每日定时提醒
{
fseek(fp,-4L,2);
fread(&i,sizeof(int),1,fp);
countmrdstx=i;
rewind(fp);
for(j=0;j<i;j++)
{
fread(&mrdstx1[j],sizeof(mrdstx),1,fp);
mrdstx1[j].hour=~mrdstx1[j].hour;//解密
mrdstx1[j].minute=~mrdstx1[j].minute;
strcpy(not,mrdstx1[j].note);
for(int v=0;v<101;v++)
{if(not[v]=='\0')
break;
else
not[v]=~not[v];
}
for(;v<20;v++)
{
not[v]='\0';
}
strcpy(mrdstx1[j].note,not);
fseek(fp,4L,1);
}
fclose(fp);
}
if(fp=fopen("mzdstx.qyg","rb"))//读入每周定时提醒
{
fseek(fp,-4L,2);
fread(&i,sizeof(int),1,fp);
countmzdstx=i;
rewind(fp);
for(j=0;j<i;j++)
{
fread(&mzdstx1[j],sizeof(mzdstx),1,fp);
mzdstx1[j].weekday=~mzdstx1[j].weekday;
mzdstx1[j].hour=~mzdstx1[j].hour;//解密
mzdstx1[j].minute=~mzdstx1[j].minute;
strcpy(not,mzdstx1[j].note);
for(int v=0;v<101;v++)
{if(not[v]=='\0')
break;
else
not[v]=~not[v];
}
for(;v<20;v++)
{
not[v]='\0';
}
strcpy(mzdstx1[j].note,not);
fseek(fp,4L,1);
}
fclose(fp);
}
for(j=0;j<100;j++)
{
jnrout[j]=98;
}
//检查打开时是否有提醒,有则弹出对话框
time (&lTime);//获得系统时间
txtime=*localtime (&lTime);//转换时间格式
if(fp=fopen("jszc.qyg","rb"))
{
fread(&y,sizeof(int),1,fp);
fread(&m,sizeof(int),1,fp);
fread(&d,sizeof(int),1,fp);
time(&tytimenow);
difference=*localtime(&tytimenow);//获得当前时间
difference.tm_year=y-1900;
difference.tm_mon=m-1;
difference.tm_mday=d;
tytimethen=mktime(&difference);//计算记录时间
tatol=(tytimenow-tytimethen)/86400;//计算天数,每差一天协调通时间差86400L
hwweeks=tatol/7;
hwweeks=hwweeks+1;
}
else
{
time(&tytimenow);
difference=*localtime(&tytimenow);//获得当前时间
y=difference.tm_year+1900;
m=difference.tm_mon+1;
d=difference.tm_mday;
difference.tm_year=y-1900;
difference.tm_mon=m-1;
difference.tm_mday=d;
tytimethen=mktime(&difference);//计算记录时间
tatol=(tytimenow-tytimethen)/86400;//计算天数,每差一天协调通时间差86400L
hwweeks=tatol/7;
hwweeks=hwweeks+1;
}
if(txtime.tm_hour==20||txtime.tm_hour==18||txtime.tm_hour==19||txtime.tm_hour==21||txtime.tm_hour==22||txtime.tm_hour==23)
{
wsprintf(qqqq," 晚上好!\n\n 今天是: %d年%d月%d日,%s,第%d天\n\n 从%d年%d月%d日开始计算的 第%d周",txtime.tm_year+1900, txtime.tm_mon+1,txtime.tm_mday,p[txtime.tm_wday],txtime.tm_yday+1,y,m,d,hwweeks);
MessageBox (hwnd,qqqq, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
if(txtime.tm_hour==0||txtime.tm_hour==1||txtime.tm_hour==2||txtime.tm_hour==3||txtime.tm_hour==4)
{
wsprintf(qqqq," 凌晨好!\n\n 今天是: %d年%d月%d日,%s,第%d天\n\n 从%d年%d月%d日开始计算的 第%d周",txtime.tm_year+1900, txtime.tm_mon+1,txtime.tm_mday,p[txtime.tm_wday],txtime.tm_yday+1,y,m,d,hwweeks);
MessageBox (hwnd,qqqq, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
if(txtime.tm_hour==5||txtime.tm_hour==6||txtime.tm_hour==7||txtime.tm_hour==8)
{
wsprintf(qqqq," 早上好!\n\n 今天是: %d年%d月%d日,%s,第%d天\n\n 从%d年%d月%d日开始计算的 第%d周",txtime.tm_year+1900, txtime.tm_mon+1,txtime.tm_mday,p[txtime.tm_wday],txtime.tm_yday+1,y,m,d,hwweeks);
MessageBox (hwnd,qqqq, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
if(txtime.tm_hour==9||txtime.tm_hour==10||txtime.tm_hour==11)
{
wsprintf(qqqq," 上午好!\n\n 今天是: %d年%d月%d日,%s,第%d天\n\n 从%d年%d月%d日开始计算的 第%d周",txtime.tm_year+1900, txtime.tm_mon+1,txtime.tm_mday,p[txtime.tm_wday],txtime.tm_yday+1,y,m,d,hwweeks);
MessageBox (hwnd,qqqq, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
if(txtime.tm_hour==12)
{
wsprintf(qqqq," 中午好!\n\n 今天是: %d年%d月%d日,%s,第%d天\n\n 从%d年%d月%d日开始计算的 第%d周",txtime.tm_year+1900, txtime.tm_mon+1,txtime.tm_mday,p[txtime.tm_wday],txtime.tm_yday+1,y,m,d,hwweeks);
MessageBox (hwnd,qqqq, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
if(txtime.tm_hour==13||txtime.tm_hour==14||txtime.tm_hour==15||txtime.tm_hour==16||txtime.tm_hour==17)
{
wsprintf(qqqq," 下午好!\n\n 今天是: %d年%d月%d日,%s,第%d天\n\n 从%d年%d月%d日开始计算的 第%d周",txtime.tm_year+1900, txtime.tm_mon+1,txtime.tm_mday,p[txtime.tm_wday],txtime.tm_yday+1,y,m,d,hwweeks);
MessageBox (hwnd,qqqq, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
for(j=0;j<countyhtx;j++)//检查约会
{
valuemonth=yhtx1[j].month-1;
if(txtime.tm_mon==valuemonth
&&txtime.tm_mday==yhtx1[j].day
&&txtime.tm_hour==yhtx1[j].hour
&&txtime.tm_min==yhtx1[j].minute
)
{
MessageBox (hwnd,yhtx1[j].note, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
}
for(j=0;j<countjnrtx;j++)//检查纪念日
{
valuemonth=jnrtx1[j].month-1;
jnrtime.tm_hour=txtime.tm_hour;
jnrtime.tm_isdst=txtime.tm_isdst;
jnrtime.tm_min=txtime.tm_min;
jnrtime.tm_sec=txtime.tm_sec;
jnrtime.tm_wday=txtime.tm_wday;
jnrtime.tm_yday=txtime.tm_yday;
jnrtime.tm_year=txtime.tm_year;
jnrtime.tm_mday=jnrtx1[j].day;
jnrtime.tm_mon=valuemonth;
mktime(&jnrtime);
moretime=jnrtime.tm_yday-txtime.tm_yday;
if(jnrout[j]!=j)//看当天是否有提醒过
{
if(moretime<6&&moretime>-1||moretime<-359)//提前5天就会有提醒
{
wsprintf(asdf,"%d月%d日\n\n%s",jnrtx1[j].month,jnrtx1[j].day,jnrtx1[j].note);
MessageBox (hwnd,asdf, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
jnrout[j]=j;//下次不再提醒了
}
}
}
for(j=0;j<countmrdstx;j++)//检查每日定时
{
if(txtime.tm_hour==mrdstx1[j].hour
&&txtime.tm_min==mrdstx1[j].minute
)
{
MessageBox (hwnd,mrdstx1[j].note, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
}
//检查每周定时
for(j=0;j<countmzdstx;j++)
{
if(txtime.tm_hour==mzdstx1[j].hour
&&txtime.tm_min==mzdstx1[j].minute
&&txtime.tm_wday==mzdstx1[j].weekday
)
{
MessageBox (hwnd,mzdstx1[j].note, "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
}
}
return 0;
case WM_COMMAND://处理菜单
switch(LOWORD(wParam))
{
case ID_GG1:
gigi=fopen("ycck.qyg","wb");
fclose(gigi);
return 0;
case ID_GG2:
DeleteFile("ycck.qyg");
return 0;
case ID_YH:
DialogBox(hIns, (LPCTSTR)IDD_DIALOGYH, hwnd, (DLGPROC)yhtxproc);//弹出约会编辑对话框
return 0;
case ID_JNR:
DialogBox(hIns, (LPCTSTR)IDD_DIALOGJNR, hwnd, (DLGPROC)jnrtxproc);//弹出纪念日编辑对话框
return 0;
case ID_MRDS:
DialogBox(hIns, (LPCTSTR)IDD_DIALOGMRDS, hwnd, (DLGPROC)mrdstxproc);//弹出每日定时编辑对话框
return 0;
case ID_MZDS:
DialogBox(hIns, (LPCTSTR)IDD_DIALOGMZDS, hwnd, (DLGPROC)mzdstxproc);//弹出每周定时编辑对话框
return 0;
case ID_DQRQ://当前日期
time (&lTime);//获得系统时间
txtime=*localtime (&lTime);//转换时间格式
if(fp=fopen("jszc.qyg","rb"))
{
fread(&y,sizeof(int),1,fp);
fread(&m,sizeof(int),1,fp);
fread(&d,sizeof(int),1,fp);
time(&tytimenow);
difference=*localtime(&tytimenow);//获得当前时间
difference.tm_year=y-1900;
difference.tm_mon=m-1;
difference.tm_mday=d;
tytimethen=mktime(&difference);//计算记录时间
tatol=(tytimenow-tytimethen)/86400;//计算天数,每差一天协调通时间差86400L
hwweeks=tatol/7;
hwweeks=hwweeks+1;
}
else
{
time(&tytimenow);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -