菜鸟提问:如何在多线程中使用SetTimer()
现在需要在线程处理函数中启动一个定时器,我一般用定时器的格式都是SetTimer(10,50,NULL),但在线程处理函数中这样加就不行,编译时会出错,提示信息如下:error C2660: 'SetTimer' : function does not take 3 parameters
但同样的写法我在别的地方如View类的消息处理函数中加就没错。是不是因为线程处理函数是全局函数的原因啊,我要在线程处理函数或全局函数中启动定时器的话应该怎样写SetTimer()数呢
问题点数:20、回复次数:2Top
1 楼Mackz(在相互)回复于 2004-05-03 23:18:55 得分 20
1. 在CWnd类的继承类中,CWnd::SetTimer()默认传递了一个参数:HWND,API中的::SetTimer()原型是这样的:
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
而线程函数或者是全局函数,或者是静态成员函数,没有继承CWnd的this指针,不能直接调用;
2. 既然用了线程,就没必要SetTimer了,直接Sleep就可以了。Top
2 楼new_guy(蓝调刀锋)(乘风破浪会有时,直挂云帆济沧海)回复于 2004-05-04 02:12:03 得分 0
markTop




