SetTimer 句柄为NULL,回调函数的线程环境是那个?

天限天空 2008-05-09 11:12:48
rt
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-05-09
  • 打赏
  • 举报
回复
原来是送分的,点名送多好,我就不跟着参和了。
cnzdgs 2008-05-09
  • 打赏
  • 举报
回复
回调函数与执行SetTimer的是同一线程,当设置了回调函数时,是在线程调用GetMessage或者PeekMessage的时候调用会调函数的,如果线程没有取消息,则回调函数永远不会执行。另外,你可以试一下,在回调函数中调用GetCurrentThreadId或者ExitThread,就可以知道是同一线程了。
healer_kx 2008-05-09
  • 打赏
  • 举报
回复
SetTimer的那个线程。
healer_kx 2008-05-09
  • 打赏
  • 举报
回复
接分。。。
我就是那个歌德。。。
打开下面链接,直接免费下载资源: https://renmaiwang.cn/s/kbuv6 在Windows编程中,定时器是实现程序自动化控制和时间间隔触发事件的重要工具。`SetTimer`函数是Windows API提供的一种简单、高效的定时器接口,它主要用于在消息循环中设置一个定时器,当达到预设的时间间隔后,系统会向指定的窗口发送一个`WM_TIMER`消息。本篇将详细讲解如何在线程内部使用`SetTimer`来实现定时器,以及`MyThreadTimer`的实现方式。理解`SetTimer`函数的基本用法。`SetTimer`的原型如下:```cppUINT_PTR SetTimer( _In_opt_ HWND hWnd, _In_ UINT nIDEvent, _In_ UINT uElapse, _In_opt_ TIMERPROC lpTimerFunc);```- `hWnd`:指向接收`WM_TIMER`消息的窗口句柄。如果不需要处理`WM_TIMER`消息,可以传入NULL。- `nIDEvent`:定时器的唯一标识符,用于区分不同的定时器。- `uElapse`:定时器的间隔时间,以毫秒为单位。- `lpTimerFunc`:定时器回调函数指针,当定时器触发时,系统调用此函数。在线程内部使用`SetTimer`时,需要注意几点:1. 如果线程有自己的消息循环,那么`SetTimer`会将`WM_TIMER`消息发送到该线程的消息队列,否则需要手动处理`WM_TIMER`消息。2. 线程必须有一个消息循环来处理`WM_TIMER`消息,因为`SetTimer`依赖于消息泵来触发事件。3. 如果线程没有窗口(例如,服务线程),则需要自定义消息处理机制,而不是使用`SetTimer`的默认窗口消息处理。`MyThreadTimer`的实现可能包括以下几个

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧