关于OnTimer()使用

OnTimer()其实是用来响应WM_TIMER消息的,其实OnTimer()就是一个回调函数,不过是系统默认的,当用户使用SetTimer()函数设定一个定时器的时候,只要是第三个参数为NULL,则系统就会调用默认的回调函数OnTimer()。

若不是NULL,则需要自己编写回调函数。

例如:

// 自定义回调函数

void CALLBACK TimerP(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime){

    cout<<"定时器执行"<<endl ;

}

int main(){

    int iId = SetTimer(NULL,0,500,TimerP) ;

    MSG msg ;

    // 消息循环,从消息队列中获取消息,响应WM_TIMER消息。

    while(GetMessage(&msg,NULL,0,0))

    {

        if(msg.message = WM_TIMER){

            DispatchMessage(&msg) ;

        }

    }

    KillTimer(NULL,iId) ;

    return 0 ;

}

时间: 2024-11-13 17:03:26

关于OnTimer()使用的相关文章

MFC的定时器OnTimer

本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动操作.例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一次数据,这样就可以在无人操作的情况下准确的进行操作.  MFC定时器 VS2010编程中,

C++ 定时器的用法:SetTimer和Ontimer

SetTimer函数的用法 1)用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer(                       HWND hWnd,//和定时器相关联的窗口              UINT_PTR nIDEvent,//一个非0的数字标志这个定时器              UINT uElapse,//指定时间间隔,以毫秒为单位              TIMERPROC lpTimerFunc//一般指定为n

MFC中OnTimer的应用

OnTimer()函数用于实现定时控制功能,定时控制功能主要由下面三个函数共同实现: SetTimer, KillTimer()和OnTimer(). 粗略的说,Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码.KillTimer用于停止计时器. 或者说Settimer是设置定时器的,Ontimer是响应Settimer消息的.当Settimer设置的时间到了,就会自动调动Ontimer()函数. 先了解下SetTimer这个API函数的

Windows中OnTimer和线程

首先看看OnTimer的做法. 1 在类中 void CMyDialog::OnTimer(UINT nIDEvent) { if (nIDEvent == MY_TIMER) { //process something } CDialog::OnTimer(nIDEvent); } BOOL CODM_DlgShowImage::OnInitDialog() { SetTimer(MY_TIMER, 500, NULL); } 2 void CMyApp::CreateDlg () { if

ontimer 与多线程

一般来说,在MFC中开启一个UI线程可以用以下代码: m_pCameraThread = AfxBeginThread(RUNTIME_CLASS(CCameraThread)); if (!m_pCameraThread->PostThreadMessage(UM_VERIFY_AVAILABILITY, NULL, NULL)) { Sleep(10); } 但是,在ontimer的一个case中,不能同时顺序启动两个上述UI线程,建议启动不同的UI线程放在不同的case中顺序执行,否则在d

单机架设传奇服务器第47课:定时器OnTimer功能详解

传奇定时器OnTimer功能详解(泡点.时间触发.任务活动) 定时器功能,是服务端中非常常见的一种功能,常见如:泡点脚本.赌博脚本,任务活动指定时间刷怪,时间触发一些都需要用到OnTimer功能,定时器总共有19个定时器可以开启.我们在添加新的定时器的时候我们先确定定时器有没有重复.直接在文本中搜索 @OnTimer 就可以了..后面跟的数字就是说明开启的是第几个定时器 我们首先就确定定时器是在服务器的位置.路径:mirserver\Mir200\Envir\MapQuest_def\QMana

如何弹出一个窗口气泡(使用定时器向上移动)

原文链接:http://blog.csdn.net/tangaowen/article/details/5108980 如何弹出一个窗口气泡 最近在工作中遇到这样一个需求,就是需要将一个窗口从右下角任务栏下面缓缓的上升到任务栏的上面,现在有很多的软件都有这样的气泡,比如:搜狗输入法的词条更新窗口,还比如CSDN的广告窗口等等. 1.首先 将要弹出的窗口移动到任务栏(当前屏幕)以下 2.然后,获得任务栏(本质是个窗口)的高度,这样就可以知道窗口最终的位置了 3.然后,计算获得窗口最终停止的位置:计

MFC利用双缓冲刷新绘图

在VC中进行绘图过程处理时,如果图形刷新很快, 经常出现图形闪烁的现象.利用先在内存绘制,然后 拷贝到屏幕的办法可以消除屏幕闪烁,具体的方法是先在内存 中创建一个与设备兼容的内存设备上下文,也就是开辟一快内 存区来作为显示区域,然后在这个内存区进行绘制图形.在绘制完成后利用 BitBlt函数把内存的图形直接拷贝到屏幕上即可. 具体想实现的是: 在Dialog客户区的一个图片控件(IDC_MAP)中绘制几个动态的点,如果不用双缓冲的技术,在屏幕刷新的时候会有闪烁的现象. CRect rect; C

duilib 界面库 实现timer定时器

看了大神介绍的duilib感觉已被同龄人狠狠地甩在背后.所以痛下决心,之后要多花时间写代码. 大神教程传送门: http://www.cnblogs.com/Alberl/p/3341956.html 现在的问题是想基于duilib实现一个timer定时器.工程基础大概是在 http://www.cnblogs.com/Alberl/p/3343763.html 因为自己的东西是基于大神的东西写的,所以要把大神的教程看得差不多才知道我在说什么.O(∩_∩)O~~ 前台大概长这个样子: 稍微修改了