SetTimer不生效,回调函数不执行

jufeng2309 jufeng2309 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
主函数

int main()
{
int iRet = 0;
DWORD dwThreadId;
HANDLE hThread;
DWORD exitCode = 0;

hThread = CreateThread(NULL,0,DoThread,0,0,&dwThreadId);
PRINT("线程已创建成功...");
dwStat = WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
return 0;
}


定时执行函数

VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
PRINT("Hello......");
}



线程函数

DWORD CALLBACK DoThread(PVOID pvoid)
{
MSG msg;
UINT timerid;
BOOL bRet;
char sCurDateTime[18] = {0};


PRINT("进入线程处理...");

bRet = PeekMessage(&msg,NULL,WM_USER,WM_USER, PM_NOREMOVE);

timerid=SetTimer(NULL,123,2000,TimerProc);

while( (bRet = GetMessage(&msg,NULL,0,0))!= 0)
{
if(bRet==-1)
{
// handle the error and possibly exit
PRINT("GetMessage Error...");
}
else if (msg.message = WM_USER)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
PRINT("接收到WM_USER消息....");
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

KillTimer(NULL,timerid);

PRINT("线程处理结束...");
return 0;
}



现在有两个疑问
1、为什么SetTimer的回调函数不行
2、SetTimer执行的时候会往线程消息队列里发WM_USER消息吗?如果不是
WM_USER消息是在什么时候往线程队列放的?

谢谢大家。。。比较着急。。。

...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
jufeng2309
进程/线程/DLL 15,465 成员 49,169 内容