这个定时器为什么只能运行一次程序就退出了?

swordbroken 2004-04-12 01:16:45
#include "stdafx.h"

#define ID_TIMER_CHECKTIME 1

INT CheckTime();

VOID CALLBACK TimerProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_TIMER message
UINT_PTR idEvent, // timer identifier
DWORD dwTime // current system time
)
{
CheckTime();
}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
::SetTimer(NULL,ID_TIMER_CHECKTIME,3000,(TIMERPROC)TimerProc);

MSG msg;
if (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
KillTimer(NULL,ID_TIMER_CHECKTIME);

return 0;
}



// Check the system time
// if 0:00 - 5:00 then do something
INT CheckTime()
{
SYSTEMTIME st;

GetLocalTime(&st);

if (st.wHour >= 0 && st.wHour < 5)
{
MessageBox(NULL,"test","test",MB_OK);
return -1;
}
else
return 0;
}
...全文
174 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
park99 2004-04-12
得到一个消息处理完了就退出了,应该循环处理所有的消息!
  • 打赏
  • 举报
回复
HanZhu1 2004-04-12
缺少消息循环
  • 打赏
  • 举报
回复
UDX协议 2004-04-12
if (GetMessage(&msg,NULL,0,0)) ->while (GetMessage(&msg, NULL, 0, 0))
  • 打赏
  • 举报
回复
快乐鹦鹉 2004-04-12
应该有消息循环。
  • 打赏
  • 举报
回复
swordbroken 2004-04-12
呵呵,没想到我把while写成if了,晕……

谢谢各位了!
  • 打赏
  • 举报
回复
w3guy 2004-04-12
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
  • 打赏
  • 举报
回复
swordbroken 2004-04-12
不知道为什么上面的程序TimerProc只能运行一次,然后程序进程就退出了。
我的意思是想程序一直运行下去的呀
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2004-04-12 01:16
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……