• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > VC定时器的用法实例详解

VC定时器的用法实例详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了vc 定时,vc 定时器,vc定时器的使用,vc timer定时器,vc 多媒体定时器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了VC中定时器的用法,分享给大家供大家参考。具体用法分析如下:

定时器在VC中的使用频繁,其原型为:
其中的参数用法如下:

hWnd       是欲设置定时器的窗体句柄。定时时间到时,系统会向该窗体发送WM_TIMER消息。
nIDEvent     定时器标识符。在一个窗体内可以使用多个定时器,不同的定时器根据nIDEvent来区分。
uElapse    定时时间,单位是毫秒。
lpTimerFunc   定时器的回调函数。如果该值为NULL,定时时间到时,定时器发送的消息WM_TIMER由窗体映像该消息的函数处理;否则由回调函数处理,说白一点,回调函数就是取代OnTimer的处理函数。

通常,我们在使用定时器时,只用到三个参数,即
UINT nIDEvent,
UINT nElapse,
void (CALLBACK EXPORT* lpfnTimer)(
HWND, UINT, UINT, DWORD) );</div>
其实,这个函数只是MFC对API的封装,其实现函数为:
       void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD))
       {
   ASSERT(::IsWindow(m_hWnd));
return ::SetTimer(m_hWnd, nIDEvent, nElapse,        (TIMERPROC)lpfnTimer);
}</div>
由此可见,CWnd::SetTimer只是将API函数SetTimer的第一个参数设置成它自己的句柄而已。
有了上面的认识,对定时器的使用就清楚了,下面举例说明定时器的具体使用。
1.打开VC,新建一基于对话框的工程,工程名为Test。在对话框上添加一按钮,将其ID改为IDC_BUTTON_START,Caption改为 Start. 映像该按钮的BN_CLICKED消息,void CTestDlg::OnButtonStart();
2.再在对话框上添加一按钮,ID为ID_BUTTON_STOP,Caption改为Stop,映像消息为void CTestDlg::OnButtonStop();
3.添加一个Lable,ID改为IDC_STATIC_TIME,用于记数,表明定时器函数的执行。
4.映像对话框的WM_TIMER消息,void CTestDlg::OnTimer(UINT nIDEvent);
BEGIN_MESSAGE_MAP(CAssistantDlg, CDialog)
    ON_WM_TIMER()
END_MESSAGE_MAP()

以上的定现函数如下所示:
{
       SetTimer(1,1000,NULL);//启动定时器1,定时时间是1秒
}

void CTestDlg::OnButtonStop()
{
       KillTimer(1);        //关闭定时器1。
}

void CTestDlg::OnTimer(UINT nIDEvent)
{
       static int nTimer=0;
       CString strTmp="";
       strTmp.Format("Timer: %d",nTimer++);
       CWnd *pWnd=GetDlgItem(IDC_STATIC_TIME);
       pWnd->SetWindowText(strTmp);   将Lable中设置新值,表明定时器已经工作。
       CDialog::OnTimer(nIDEvent);
}</div>

回调函数的使用。

如果不想使用窗体的WM_TIMER消息函数处理,可以使用回调函数来取代,读者可以在上面例子的基础上,增加一个回调函数,以证实前面的讨论。

首先,定义一个回调函数,回调函数的定义必须按照如下格式。

我的实现函数如下:
{
AfxMessageBox("Timer is running!");//定时器时间到,强出一对话框,表明定时器已经运行。
}</div>
将上面的启动函数稍做修改
{
// SetTimer(1,1000,NULL);//启动定时器1,定时时间是1秒
   SetTimer(1,1000,(TIMERPROC)TimerProc);//用回调函数处理,此时对话框的消息处理函数不再处理。
}</div>

希望本文所述对大家的VC程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • VC定时器的用法实例详解

相关文章

  • 2017-05-28c++实现二叉查找树示例
  • 2017-05-28C语言 实现归并排序算法
  • 2017-05-28堆基本操作实现最大堆
  • 2017-05-28解析C++中的5个存储类的作用
  • 2017-05-28C语言实现带头结点的链表的创建、查找、插入、删除操作
  • 2017-05-28C++中const用法小结
  • 2017-05-28清除3389远程登录日志
  • 2017-05-28VC随机函数srand和rand用法
  • 2017-05-28c++ STL set_difference set_intersection set_union 操作
  • 2017-05-28c++利用windows函数实现计时示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
    • C++ boost::asio编程-域名解析详细介绍
    • 基于linux下获取时间函数的详解
    • c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)
    • C++快速幂与大数取模算法示例
    • C语言实现在windows服务中新建进程的方法
    • C++中栈结构建立与操作详细解析
    • C语言编写多功能日历
    • 简单实现C++复数计算器
    • c++隐式类型转换示例分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有