游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2325|回复: 3

求助~~关于计时器~~高手们请进~~

[复制链接]

58

主题

281

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2003-10-30 23:58:00 | 显示全部楼层 |阅读模式
UNIT SetTimer( HWND hWnd, UNIT nIDEvent, UNIT uElapse, TIMERPROC lpTimerFunc );

它的第一个参数,是指定与它关联的窗口句柄,也即是程序的主线程吧?
指定后,如果主线程运行到Sleep(8000); 那么期间,TimerProc()不会被调用,也就表示TimerProc()是在主线程中被调用的。(经测试)
但我的程序使用了多线程来处理(调用CreateThread),当其他线程与主线程的这个TimerProc同时处理一个数据时有可能造成冲突。(如线程处理a=1;b=a;而期间a却被TimerProc改变,使得b的值不为1)
所以想让它与程序的其他线程关联,而不是与主线程关联,请问可以办到吗?  [em24]

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-10-31 03:00:00 | 显示全部楼层

Re:求助~~关于计时器~~高手们请进~~

WM_TIMER只是系统发给应用程式的消息,一般窗口的消息响应处理部分都是放在主线程中,如果可能,将消息响应处理部分放入子线程应该也是可以的。

15

主题

155

帖子

157

积分

注册会员

Rank: 2

积分
157
发表于 2003-10-31 11:23:00 | 显示全部楼层

Re:求助~~关于计时器~~高手们请进~~

UNIT SetTimer( HWND hWnd, UNIT nIDEvent, UNIT uElapse, TIMERPROC lpTimerFunc );
你写一个时间处理的回调函数,传给最后一个参数lpTimerFunc,hWnd设为NULL,系统就每次调用你的函数了。也可以在线程中使用。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2003-10-31 13:35:00 | 显示全部楼层

Re:求助~~关于计时器~~高手们请进~~

用CriticSection..
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-23 18:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表