c++ 定时器如何实现?

c++怎么没有timer控件啊,我要每隔1s触发一次事件怎么办?听说可以用settimer怎么用啊???????求一简单实例程序,比如用静态文本框显示当前时间~~... c++怎么没有timer控件啊,我要每隔1s触发一次事件怎么办?
听说可以用settimer 怎么用啊???????
求一简单实例程序,比如用静态文本框显示当前时间~~
展开
 我来答
C嘎嘎牌香烟
推荐于2018-02-12 · TA获得超过132个赞
知道答主
回答量:77
采纳率:0%
帮助的人:45.9万
展开全部
处理窗口的WM_TIME消息。添加处理函数OnTimer并编写你的处理代码。
在需要启动定时器里调用窗口类的SetTimer函数。
SetTimer ( ID, time, callbreakfunction);
意思为:
参数1,定时器ID
参数2,回调函数多久被调用一次,单位为千分之一秒、
参数3,回调函数,如果为NULL,则调用OnTimer

另外一个方法是使用线程,但这会麻烦些。如果你刚开始是学VB的。那建议你耐心看,慢慢来,VC远比VB复杂一百倍。

设计一个线程入口函数,使用Sleep函数来暂停线程
DWORD WINAPI thread_proc(LPVOID lpParam)
{
for(int i = 0; i < ( int * ) lpParma; i ++ )
{
Sleep( 1000 );//间隔1秒
printf("%d,", i );//注意,在线程中使用控制台要确保它有stdout输出句柄
}
return 0;
}

在main函数中:
CreateThread( NULL, NULL, thread_proc, NULL, NULL );//全默认就行

最后别忘了添加头文件:
#include <windows.h>
#include <stdio.h>
追问
举个例看
在哪个地方写settimer
哪个地方写on timer
我要在某个按键按下后 void CMy0Dlg::OnButton1()
触发定时器,怎么做啊?
追答
处理窗口的WM_TIME消息。添加处理函数OnTimer并编写你的处理代码。
在需要启动定时器里调用窗口类的SetTimer函数。

仔细理解这两句话,没有例子可写。
du瓶邪
推荐于2016-07-15 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:3019万
展开全部
先请看SetTimer这个API函数的原型:
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT uElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);

例如
SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器
在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了,
例如:
UINT SetTimer(1,100,NULL);
函数反回值就是第一个参数值1,表示此定时器的ID号。
第二个参数表示要等待100毫秒时间再重新处理一次。
第三个参数在这种方法中一般用NULL。
注意:设置第二个参数时要注意,如果设置的等待时间比处理时间短,程序就会出问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lube13081098
2012-10-04
知道答主
回答量:17
采纳率:0%
帮助的人:10.4万
展开全部
可以用这个方法

int timeOrigin = GetTickCount();
while( (GetTickCount() - timeOrigin) < 1000) ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式