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

📄 提醒程序.cpp

📁 介绍一下这个程序的功能: 1
💻 CPP
📖 第 1 页 / 共 5 页
字号:
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);
		}
			  return 0;
case ID_DJS:
DialogBox(hIns, (LPCTSTR)IDD_DIALOGDJS, hwnd, (DLGPROC)djsproc);//弹出倒计时编辑对话框				
return 0;
case ID_RQJS:
DialogBox(hIns, (LPCTSTR)IDD_DIALOGRQJS, hwnd, (DLGPROC)rqjsproc);//弹出日期计算编辑对话框					
return 0;
case ID_MB:
mb();					//弹出秒表
return 0;
case ID_DSQ:
DialogBox(hIns, (LPCTSTR)IDD_DIALOGDSQ, hwnd, (DLGPROC)dsqproc);//弹出定时器编辑对话框						
return 0;
case ID_HEL://说明
MessageBox (hwnd,"说明:\n      提醒最多输入100条;输入时间应为24时制;纪念日提前5天会提醒;添加提醒后会生成*.qyg文件;每个应用程序秒表只能用一个,否则会冲突;日期计算如果得到错误结果则是超出系统时间范围,请重新输入。显示、隐藏窗口热键ctrl+alt+q。如每天使用,请将本程序托到:开始菜单╲程序╲启动╲,目录下。\n	   本软件为绿色软件,无须安装,无须注册。", "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);			
return 0;
case ID_JSZC:
	DialogBox(hIns, (LPCTSTR)IDD_DIALOGJSZC, hwnd, (DLGPROC)jszcproc);//弹出日期计算编辑对话框					
	return 0;
	case ID_DELYH:
if(IDOK==MessageBox (hwnd,"约会提醒将会被全部删除,确定要删除吗?", "宇光提醒程序", MB_OKCANCEL | MB_ICONEXCLAMATION|MB_DEFBUTTON2))
DeleteFile("yhtx.qyg");
return 0;
case ID_DELJNR:
if(IDOK==MessageBox (hwnd,"纪念日提醒将会被全部删除,确定要删除吗?", "宇光提醒程序", MB_OKCANCEL | MB_ICONEXCLAMATION|MB_DEFBUTTON2))
DeleteFile("jnrtx.qyg");
return 0;
case ID_DELMR:
if(IDOK==MessageBox (hwnd,"每日定时提醒将会被全部删除,确定要删除吗?", "宇光提醒程序", MB_OKCANCEL | MB_ICONEXCLAMATION|MB_DEFBUTTON2))
DeleteFile("mrdstx.qyg");
return 0;
case ID_DELMZ:
if(IDOK==MessageBox (hwnd,"每周定时提醒将会被全部删除,确定要删除吗?", "宇光提醒程序", MB_OKCANCEL | MB_ICONEXCLAMATION|MB_DEFBUTTON2))
DeleteFile("mzdstx.qyg");
return 0;
case ID_ABOUT://关于
MessageBox (hwnd,"程序设计:秦伟,完成于2002年7月13日\n    如发现该程序有问题或功能不全,请与我联系,我会尽快为你解决。联系方式:吉林大学朝阳校区4009班,Email:qinweisuperman@etang.com,OICQ:1508789", "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);			
return 0;
		}
	case WM_TIMER://处理时钟消息
		time (&lTime);//获得系统时间
		txtime=*localtime (&lTime);//转换时间格式
		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_DESTROY://结束应用程序
		KillTimer (hwnd, ID_TIMER);//通知系统不要发送时间消息了
		PostQuitMessage (0);
		return 0;
	}
	return DefWindowProc (hwnd, msg, wParam, lParam);
}
//函数:MyRegisterClass
//作用:注册窗口类
BOOL MyRegisterClass(HINSTANCE hInstance)
{
	wnd.cbSize = sizeof (wnd);
	wnd.style = CS_HREDRAW | CS_VREDRAW;
	wnd.lpfnWndProc = WndProc;
	wnd.cbClsExtra = 0;
	wnd.cbWndExtra = 0;
	wnd.hInstance = hInstance;
	wnd.hIcon = LoadIcon(hInstance,(LPCTSTR)IDI_YGRJ);
	wnd.hCursor = LoadCursor(NULL, IDC_ARROW);
	wnd.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
	wnd.lpszMenuName= (LPCTSTR)IDR_MENU1;
	wnd.lpszClassName = szAppName;
	wnd.hIconSm = LoadIcon(hInstance,(LPCTSTR)IDI_QW);
	return RegisterClassEx (&wnd);
}
//函数:InitInstance
//作用:创建和显示窗口,申请时针消息
BOOL InitInstance(HINSTANCE hInstance,int iCmdShow)
{
	FILE *ak;
	HWND hwnd;
	hwnd = CreateWindowEx (WS_EX_TOPMOST,
		szAppName, "宇光提醒程序",
                          WS_OVERLAPPED|WS_SYSMENU|WS_MINIMIZEBOX,
                         200,
                       0,
                       618,
                       51,
                          NULL, NULL, hInstance, NULL) ;
	hwn=hwnd;
	    hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_ACC);
		RegisterHotKey(hwnd,IDHK,MOD_CONTROL|MOD_ALT,0x51);	
    if (!SetTimer (hwnd, ID_TIMER, 60000, NULL))//申请时针消息
    {
			MessageBox (hwnd, "定时器太多!", szAppName,MB_ICONEXCLAMATION | MB_OK) ;
			return FALSE ;
    }
	if(ak=fopen("ycck.qyg","rb"))
{
	ifhide=2;
	ShowWindow(hwnd,SW_HIDE);
	fclose(ak);
}
	else
    {ShowWindow (hwnd, SW_SHOW);}
    UpdateWindow (hwnd);

		return TRUE;
}
LRESULT CALLBACK yhtxproc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)//约会提醒消息处理
{
	char mon[3]="\0",day[3]="\0",hou[3]="\0",min[3]="\0",not[101]="\0";
	char all[151],inttoa[11];
	static open=1,k,j,candel=1;
	time_t now;
	tm then;
	FILE *fp;
SendDlgItemMessage(hwnd,IDC_EDIT2,EM_LIMITTEXT,2,0);
SendDlgItemMessage(hwnd,IDC_EDIT3,EM_LIMITTEXT,2,0);
SendDlgItemMessage(hwnd,IDC_EDIT4,EM_LIMITTEXT,2,0);
SendDlgItemMessage(hwnd,IDC_EDIT5,EM_LIMITTEXT,2,0);
SendDlgItemMessage(hwnd,IDC_EDIT6,EM_LIMITTEXT,100,0);  
	switch (msg)
	{
		case WM_INITDIALOG:                 
		time(&now);
		then=*localtime(&now);
				SetDlgItemText (hwnd,IDC_EDIT2,itoa(then.tm_mon+1,inttoa,10));//显示内容
		        SetDlgItemText (hwnd,IDC_EDIT3,itoa(then.tm_mday,inttoa,10));
				SetDlgItemText (hwnd,IDC_EDIT4,itoa(then.tm_hour,inttoa,10));
			    SetDlgItemText (hwnd,IDC_EDIT5,itoa(then.tm_min,inttoa,10));
			    SetDlgItemText (hwnd,IDC_EDIT6,"\0");
					if(open==1)
						{                          	//查看
			  if(fp=fopen("yhtx.qyg","rb"))
			  {
				  fseek(fp,-4L,2);
           fread(&i,sizeof(int),1,fp);
		   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);
		wsprintf(all,"%d月%d日%d时%d分,%s",yhtx1[j].month,yhtx1[j].day,yhtx1[j].hour,yhtx1[j].minute,yhtx1[j].note);
        SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)all);
		   }open=2;
	fclose(fp);
			  }	
			  else {i=0;}
			  return TRUE;
						}
						else 
			  return TRUE;
	case WM_COMMAND:
if (HIWORD (wParam) == LBN_SELCHANGE)
		{
k = SendDlgItemMessage(hwnd,IDC_LIST1, LB_GETCURSEL, 0, 0) ;
                  SetDlgItemText (hwnd,IDC_EDIT2,itoa(yhtx1[k].month,inttoa,10));//显示内容
		          SetDlgItemText (hwnd,IDC_EDIT3,itoa(yhtx1[k].day,inttoa,10));
				  SetDlgItemText (hwnd,IDC_EDIT4,itoa(yhtx1[k].hour,inttoa,10));
				  SetDlgItemText (hwnd,IDC_EDIT5,itoa(yhtx1[k].minute,inttoa,10));
				  SetDlgItemText (hwnd,IDC_EDIT6,yhtx1[k].note);
				  candel=2;
return TRUE;
		}
		switch(LOWORD(wParam))
		{
		case IDCANCEL:
				EndDialog(hwnd, LOWORD(wParam));
			return TRUE;
		case IDGBYH:                                       //关闭
			  EndDialog(hwnd, TRUE);open=1;candel=1;
			  return TRUE;	  		
      case IDQKYH:                                                     //清空
                  SetDlgItemText (hwnd,IDC_EDIT2,"\0");
		          SetDlgItemText (hwnd,IDC_EDIT3,"\0");
				  SetDlgItemText (hwnd,IDC_EDIT4,"\0");
				  SetDlgItemText (hwnd,IDC_EDIT5,"\0");
				  SetDlgItemText (hwnd,IDC_EDIT6,"\0");
			  return TRUE;
      case IDSCYH:                                                 //删除
		  if(i==0)
		  {MessageBox (hwnd,"没有记录!", "宇光提醒程序",
			MB_OK | MB_ICONEXCLAMATION);			  return TRUE;
		  }
	if(candel==1&&(i!=0))
	{
	MessageBox (hwnd,"请点击要删除的记录先!", "宇光提醒程序",
			MB_OK | MB_ICONEXCLAMATION);			  return TRUE;
	}
if(candel==8)
	{
	MessageBox (hwnd,"没有记录了,不能删除!", "宇光提醒程序",
			MB_OK | MB_ICONEXCLAMATION);			  return TRUE;
	}
	if(open!=1&&candel==2)
	{
		  if(IDOK==MessageBox (hwnd,"确定要删除吗?", "宇光提醒程序", MB_OKCANCEL | MB_ICONEXCLAMATION|MB_DEFBUTTON2))
		  {
              k = SendDlgItemMessage(hwnd,IDC_LIST1, LB_GETCURSEL, 0, 0) ;//刷新列表框
        SendDlgItemMessage(hwnd,IDC_LIST1,LB_DELETESTRING,k,wParam);
		        SendDlgItemMessage(hwnd,IDC_LIST1,LB_SETCURSEL,k-1,0);
                SetDlgItemText (hwnd,IDC_EDIT2,"\0");
		          SetDlgItemText (hwnd,IDC_EDIT3,"\0");
				  SetDlgItemText (hwnd,IDC_EDIT5,"\0");
				  SetDlgItemText (hwnd,IDC_EDIT4,"\0");
				  SetDlgItemText (hwnd,IDC_EDIT6,"\0");
			  for(j=k;j<i;j++)                                     //后面的向前串
			  {
                 yhtx1[j].month=yhtx1[j+1].month;
				 yhtx1[j].day=yhtx1[j+1].day;
				 yhtx1[j].hour=yhtx1[j+1].hour;
				 yhtx1[j].minute=yhtx1[j+1].minute;
				 strcpy(yhtx1[j].note,yhtx1[j+1].note);
			  }
			  i--; countyhtx--;			//提醒数减1
			  fp=fopen("yhtx.qyg","wb");
			  for(j=1;j<i+1;j++)                                 //重写文件
			  {
				  yhtx1[j-1].month=~yhtx1[j-1].month;
yhtx1[j-1].day=~yhtx1[j-1].day;                                    //加密
yhtx1[j-1].hour=~yhtx1[j-1].hour;
yhtx1[j-1].minute=~yhtx1[j-1].minute;
	strcpy(not,yhtx1[j-1].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-1].note,not);
           fwrite(&yhtx1[j-1],sizeof(yhtx),1,fp);
          fwrite(&j,sizeof(int),1,fp);
  yhtx1[j-1].month=~yhtx1[j-1].month;
yhtx1[j-1].day=~yhtx1[j-1].day;                                    //还原
yhtx1[j-1].hour=~yhtx1[j-1].hour;
yhtx1[j-1].minute=~yhtx1[j-1].minute;
		strcpy(not,yhtx1[j-1].note);
for(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-1].note,not);
			  } fclose(fp);if(i==0){DeleteFile("yhtx.qyg");candel=8;}
		  }
			  return TRUE;
	}	
		case IDXGYH:                                //修改
			if(i==0)
		  {MessageBox (hwnd,"没有记录!", "宇光提醒程序",
			MB_OK | MB_ICONEXCLAMATION);			  return TRUE;
		  }
if(candel==1&&(i!=0))
	{
	MessageBox (hwnd,"请点击要修改的记录先!", "宇光提醒程序",
			MB_OK | MB_ICONEXCLAMATION);			  return TRUE;
	}
if(open!=1&&candel==2)
	{GetDlgItemText(hwnd,IDC_EDIT2,mon,3);
			GetDlgItemText(hwnd,IDC_EDIT3,day,3);
			GetDlgItemText(hwnd,IDC_EDIT4,hou,3);   //取得编辑框中的文本
			GetDlgItemText(hwnd,IDC_EDIT5,min,3);
			GetDlgItemText(hwnd,IDC_EDIT6,not,101);    
	if(
   (!strcmp(mon,"\0"))||(!strcmp(day,"\0"))||(!strcmp(hou,"\0"))||(!strcmp(min,"\0"))
   ||(atoi(mon)>12)
   ||(atoi(mon)<1)
   ||(atoi(day)>31)||(atoi(day)<1)
   ||(atoi(hou)>23)||(atoi(hou)<0)                   //判断输入是否错误
   ||(atoi(min)<0)||(atoi(min)>59)
   )
{
MessageBox (hwnd,"输入错误!", "宇光提醒程序", MB_OK | MB_ICONEXCLAMATION);
		  return TRUE;
}
		  if(IDOK==MessageBox (hwnd,"确定要修改吗?", "宇光提醒程序", MB_OKCANCEL | MB_ICONEXCLAMATION|MB_DEFBUTTON2))
		  {
yhtx1[k].month=atoi(mon);                      //在这修改
		yhtx1[k].day=atoi(day);
		yhtx1[k].hour=atoi(hou);
		yhtx1[k].minute=atoi(min);
		strcpy(yhtx1[k].note,not);
        SendDlgItemMessage(hwnd,IDC_LIST1,LB_DELETESTRING,k,wParam);             //修改列表框
 wsprintf(all,"%d月%d日%d时%d分,%s",yhtx1[k].month,yhtx1[k].day,yhtx1[k].hour,yhtx1[k].minute,yhtx1[k].note);
        SendDlgItemMessage(hwnd,IDC_LIST1, LB_INSERTSTRING, k, (LPARAM)all);
        SendDlgItemMessage(hwnd,IDC_LIST1,LB_SETCURSEL,k,0) ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -