WINDOWS API中SetTimer() 的用法

adj1212 2009-03-21 12:54:38
SetTimer(HWND,UNIT,UINT,TIMERPROC);
参数意义:
1.记时器所在窗口句柄
2.序号
3.记时周期
4.记时器响应函数
目前就是1,4这2个不会确定
我自己建的一个类 名字是 Ctjshuju
在这个类的下面有个insert()的函数,要在里面用到 settimer() 但是参数不会设定。
有那位大侠帮个忙啊??
求救 求救
...全文
637 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ake1988 2009-11-04
  • 打赏
  • 举报
回复
VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,unsigned int idEvent,DWORD dwTime)
{
//定时的时间到了,就会进来,类似OnTimer的作用
//处理事情....
}
adj1212 2009-03-21
  • 打赏
  • 举报
回复
按照您的做了 但是编译出现错误
H:\vc\tianjia\tjshuju.cpp(202) : error C2664: 'SetTimer' : cannot convert parameter 4 from 'void (struct HWND__ *,unsigned int,unsigned long,unsigned long)' to 'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)'
zhujuncug 2009-03-21
  • 打赏
  • 举报
回复
有两种方式供参考:
1.包装一个窗口(不显示)然后使用该窗口的句柄。
2.可以使用第四个参数TIMERPROC
具体的做法是:
做个消息循环的线程如下所以
DWORD WINAPI MessageLoop(LPVOID lparam)
{
MSG msg;
while(g_ThreadExit)
{
BOOL bRet=::GetMessage(&msg,NULL,0,0);
if(!bRet)
{
break;
}
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}

return 0;
}

定义一个回调函数
VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
{
//定时的时间到了,就会进来,类似OnTimer的作用
//处理事情....
}

设置定时时隙:::SetTimer(NULL,0,5*1000,TimerProc);




hxzmm 2009-03-21
  • 打赏
  • 举报
回复
SetTimer必须要有一个窗口,你的类没有窗口就调用不了!
adj1212 2009-03-21
  • 打赏
  • 举报
回复
主要是第一个参数 怎么找 怎么定义啊
adj1212 2009-03-21
  • 打赏
  • 举报
回复
不是CWND里面的那个settimer() 是API的 2个不一样的
fishion 2009-03-21
  • 打赏
  • 举报
回复
如果你是用MFC的话,那么用SetTimer(1,1000,NULL);这种形式
chenghu19860527 2009-03-21
  • 打赏
  • 举报
回复
一般SetTimer(1,1000,NULL);//1--计时器标识,1000--计时周期1s
具体要看你怎么用它,可查MSDN

4,011

社区成员

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

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