mfc ontimer问题
此代码要实现的功能是读取文件中存储的日期,时间和备忘内容,然后读取当前时间,若匹配则弹出对话框,但实际运行中出现了问题。当到时间的时候对话框弹出,及时点确定没事,但如果没...
此代码要实现的功能是读取文件中存储的日期,时间和备忘内容,然后读取当前时间,若匹配则弹出对话框,但实际运行中出现了问题。当到时间的时候对话框弹出,及时点确定没事,但如果没点则崩溃,求问这是为什么
void CMemoDlg::OnTimer(UINT nIDEvent)
{
CString currentdate,currenttime;
CTime t = CTime::GetCurrentTime();
currentdate.Format("%d\\%d\\%d",t.GetYear(),t.GetMonth(),t.GetDay());
currenttime.Format("%d时%d分%d秒",t.GetHour(),t.GetMinute(),t.GetSecond());
char* pszFileName="memo.txt";
CStdioFile myFile;
UpdateData(TRUE);
if(PathFileExists(pszFileName))
{
myFile.Open(pszFileName,CFile::typeText|CFile::modeRead|CFile::modeNoTruncate);
CString date,time,content;
while(myFile.ReadString(date)!=FALSE)
{
myFile.ReadString(time);
myFile.ReadString(content);
if(date==currentdate&&time==currenttime)
{
MessageBox(content,"闹钟!",MB_OK);
}
}
}
myFile.Close();
CDialog::OnTimer(nIDEvent);
}
小白求助攻,若需要更多信息请声明 展开
void CMemoDlg::OnTimer(UINT nIDEvent)
{
CString currentdate,currenttime;
CTime t = CTime::GetCurrentTime();
currentdate.Format("%d\\%d\\%d",t.GetYear(),t.GetMonth(),t.GetDay());
currenttime.Format("%d时%d分%d秒",t.GetHour(),t.GetMinute(),t.GetSecond());
char* pszFileName="memo.txt";
CStdioFile myFile;
UpdateData(TRUE);
if(PathFileExists(pszFileName))
{
myFile.Open(pszFileName,CFile::typeText|CFile::modeRead|CFile::modeNoTruncate);
CString date,time,content;
while(myFile.ReadString(date)!=FALSE)
{
myFile.ReadString(time);
myFile.ReadString(content);
if(date==currentdate&&time==currenttime)
{
MessageBox(content,"闹钟!",MB_OK);
}
}
}
myFile.Close();
CDialog::OnTimer(nIDEvent);
}
小白求助攻,若需要更多信息请声明 展开
1个回答
展开全部
建议,当匹配正确的时候先KillTimer,点击确定后再SetTimer启动定时器。
追问
我按你说的先KillTimer,点击确定后再SetTimer启动定时器,但发现重新启动没反应,附代码如下:
if(date==currentdate&&time==currenttime)
{
KillTimer(1);
int nRet=MessageBox(content,"闹钟!",MB_OK);
if(nRet==MB_OK){
SetTimer(1,1000,NULL);
}
}
不知道错在哪,求解
追答
if(nRet==MB_OK){
SetTimer(1,1000,NULL);
应该是这一句有问题,应该是SetTimer(1,1000,NULL);这一句没有被调用,你试一试把判断去掉,只要这一句:
SetTimer(1,1000,NULL);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询