CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

SetTimer具体怎么使用呢?

楼主spcec(zeus)2003-09-01 12:42:43 在 C++ Builder / 基础类 提问

SetTimer具体怎么使用呢?能不能给个例子讲解一下,具体怎样启动定时器,然后如何判断是否满足情况再调用之后的函数?  
  请高手不吝赐教,谢谢!  
  问题点数:20、回复次数:5Top

1 楼hongliqiu(在火中)回复于 2003-09-01 12:55:20 得分 5

TTimer控件中有Enable属性,可以运行时刻修改该属性的值,使定时器启动/停止  
  Interval属性是定时器时间间隔,单位毫秒。  
  Ontimer事件,定时器到时间后就调用Ontimer事件中的代码。  
   
  void   __fastcall   TForm1::Timer1Timer(TObject   *Sender)  
  {  
          //add   your   code   here  
  }  
  //---------------------------------------------------------------------------  
   
   
  你可以在其他时间中控制TTimer的停/启  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
          Timer1->Enabled   =   false;   //停止定时器  
          Timer1->Interval   =   500;       //设置定时间隔  
          Timer1->Enabled   =   true       //启动定时器  
   
  }Top

2 楼nuaacims(沉底鱼)回复于 2003-09-01 14:21:00 得分 5

TTimer控件就是封装了SetTimer()函数  
  UINT_PTR   SetTimer(  
      HWND   hWnd,                             //   handle   to   window  
      UINT_PTR   nIDEvent,             //   timer   identifier  
      UINT   uElapse,                       //   time-out   value  
      TIMERPROC   lpTimerFunc       //   timer   procedure  
  );  
  SetTimer函数有两种触发方式,一种是Callback函数TIMERPROC   lpTimerFunc    
  而TTimer中使用的接受WM_Timer消息的方式...  
  大部分的时候   TTimer就足够用了   ...Top

3 楼binbin(破坏分子)回复于 2003-09-01 15:04:21 得分 5

用TTimer控件就可以了.  
  使用SetTimer   API函数需要至少一种方法来实现Timer消息响应:  
  1.指定一个Timer过程.  
  写一个回调函数作为SetTimer的最后一个参数,在回调函数中处理Timer消息,该函数象OnTimer一样,但是一个普通Windows回调函数,你无法直接使用Form的成员了.  
   
  2.不指定Timer过程,那么必须在窗口过程中处理WM_TIMER消息,要做到这一点你必须重载WndProc或用其他方法代替VCL处理消息.  
   
  从上面看,还是直接用Timer控件方便些,通过Enabled就可以轻松生成和解除TimerTop

4 楼spcec(zeus)回复于 2003-09-02 00:35:08 得分 0

void   __fastcall   TForm1::Timer1Timer(TObject   *Sender)  
  {  
          //add   your   code   here  
  }  
  //---------------------------------------------------------------------------  
   
  当时间到了之后引发执行上面这个函数之后,我发现好像这个事件触发函数中的代码被反复执行了,怎样才能让这个事件中的代码只执行一边然后再转回到原来若鼠标移动则再次开启定时器重新开始新的计时?Top

5 楼hongliqiu(在火中)回复于 2003-09-02 10:53:05 得分 5

void   __fastcall   TForm1::Timer1Timer(TObject   *Sender)  
  {  
          if   (Timer1->Enabled)  
          {  
                    //add   your   excute   code   here      
                    Timer1->Enabled=   false;       //这样你的代码只能执行一次.  
          }  
   
  }  
  //-----------Top

相关问题

  • Request.ServerVariables("LOGON_USER")具体怎么使用?
  • SetTimer的使用
  • 怎么使用INSTALLSHIELD??!?!?,具体步骤????急急,谢谢
  • 查了一个上午,就是不知道SetTimer怎么使用?
  • 我怎么就连接不上sql server呢??使用ado,具体请进...............
  • 请问:asp的报表打印能否使用华表,具体怎么用啊
  • Shell_NotifyIcon()怎么样响应右击鼠标事件?SetTimer()使用TimeProc怎么调用?
  • SetTimer的使用方法
  • 使用SetTimer的问题;
  • 我需要使用InstallShield向系统添加一个文件DSN,应该用什么函数,具体怎么做?

关键词

  • 函数
  • 控件
  • 属性
  • 消息
  • 定时器
  • settimer
  • timer
  • ttimer
  • 具体
  • ontimer

得分解答快速导航

  • 帖主:spcec
  • hongliqiu
  • nuaacims
  • binbin
  • hongliqiu

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo