⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 提醒程序.cpp

📁 介绍一下这个程序的功能: 1
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#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 + -