`
jbm3072
  • 浏览: 211563 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何使用SetTimer MFC

阅读更多
Timer事件,即定时器事件,是在游戏编程中,经常使用的一个事件。借助它可以产生定时执行动作的效果。这篇文章,就和大家一起探讨一下如何使用SetTimer()函数。

1、SetTimer定义在那里?

SetTimer表示的是定义个定时器。根据定义指定的窗口,在指定的窗口(CWnd)中实现OnTimer事件,这样,就可以相应事件了。

SetTimer有两个函数。一个是全局的函数::SetTimer()

UINT SetTimer(
HWND
hWnd,// handle of window for timer messages
UINT nIDEvent,// timer identifier
UINT uElapse,// time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);

其中hWnd 是指向CWnd的指针,即处理Timer事件的窗口类。说道窗口类(CWnd),我们有必要来看一下CWnd的继承情况:CWnd有以下子类:CFrameWnd,CDialog,CView,CControlBar等类。这也意味这些类中都可以定义SetTimer事件。

同时,SetTimer()在CWnd中也有定义,即SetTimer()是CWnd的一个成员函数。CWnd的子类可以调用该函数,来设置触发器。

UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );

参数含义:

nIDEvent:是指设置这个定时器的iD,即身份标志,这样在OnTimer()事件中,才能根据不同的定时器,来做不同的事件响应。这个ID是一个无符号的整型。

nElapse

是指时间延迟。单位是毫秒。这意味着,每隔nElapse毫秒系统调用一次Ontimer()。

void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD)

Specifies the address of the application-supplied TimerProc callback function that processes the WM_TIMER messages. If this parameter is NULL, the WM_TIMER messages are placed in the application’s message queue and handled by the CWnd object。

意思是,指定应用程序提供的TimerProc回调函数的地址,来处里这个Timer事件。如果是NULL,处理这个Timer事件的定义这个Timer的CWnd对象。他将WM_TIMER消息传递给这个对象,通过实现这个对象的OnTimer()事件来处理这个Timer事件。

所以,一般情况下,我们将这个值设为NULL,有设置该定时器的对象中的OnTimer()函数来处理这个事件。

同样的,我们再看看KillTimer()和OnTimer()的定义:

KillTimer同SetTimer()一样,他也有两个,一个是全局的::KillTimer(),另一个是CWnd的一个函数。他的声明如下:

//全局函数

BOOL KillTimer(
HWND
hWnd,// handle of window that installed timer
UINT uIDEvent // timer identifier
);

//CWnd函数

BOOL KillTimer( int nIDEvent );

这两个函数表示的意思是将iD为nIDEVENT的定时器移走。使其不再作用。其用法如同SetTimer()一样。

再看看OnTimer()

CWnd::OnTimer

afx_msg void OnTimer( UINT nIDEvent );

ontimer()是响应CWnd对象产生的WM_Timer消息。nIDEvent表示要响应TIMER事件的ID。

二、Timer事件的使用:

由以上的分析,我们应该很清楚,如何来使用Timer事件。假定我们在视图上画一个渐变的动画。我们首先在菜单栏上添加一个菜单项,给这个菜单添加命令响应:

pView->SetTimer(1,1000,NULL);//pView是视图类的指针,这里是在视图类当中设置一个定时器。

添加完毕,再给视图类添加一个WM_Timer事件的相应。在OnTimer()函数中编写汉书,进行相应。

如此,就能做出动画。

分享到:
评论

相关推荐

    MFC Timer(SetTimer/KillTimer)使用方法

    MFC 使用定时器的示例. 1,选择Dialog视图,右击选择“事件”. 2,选择“新建Windows消息/事件(N)”列表,添加WM_TIMER到右侧列表内。 3,cpp会自动生成 ...4,使用SetTimer启动定时器. 5,使用KillTimer取消定时器.

    MFC中OnCreate、Settimer、OnTimer、KillTimer的使用例子

    这一份代码是实现MFC的窗口创建完成需要立刻对某些控件进行响应,以及如何使用SetTimer和KillTimer的例子。 因为在MFC的初始化函数中,窗口创建还没有完成不能对窗口上的控件进行初始化操作,这是需要调用OnCreate...

    用MFC中的SetTimer、OnTimer和KillTimer实现的计时器与倒计时的简单Demo

    用MFC中的SetTimer、OnTimer和KillTimer实现的计时器与倒计时的简单Demo。开发工具为VS2010。 MFC中的OnTimer()函数用于实现定时控制功能,定时控制功能主要由下面三个函数共同实现: SetTimer, KillTimer()和...

    mfc精确控制时间 ms级别

    下面是一个简单的示例,展示如何在MFC中使用这两个API进行毫秒级的计时: ```cpp #include LARGE_INTEGER start, end, frequency; void StartTimer() { QueryPerformanceCounter(&start); ...

    MFC定时器的使用 MFC定时器的使用

    本篇文章将深入探讨如何在MFC应用中使用定时器。 首先,MFC定时器分为两种类型:消息定时器和窗口定时器。消息定时器通过发送WM_TIMER消息到指定窗口来触发事件,而窗口定时器则使用CTimer类,它基于CObject并直接...

    MFC实现时钟 MFC实现时钟

    在Windows编程领域,Microsoft Foundation Class (MFC)库是一个强大的工具,它为开发人员提供了一种使用C++构建Windows应用程序的高效方式。本篇文章将详细探讨如何使用MFC来实现一个基本的桌面时钟程序。 MFC是...

    基于MFC 的C++程序SetTimer的源代码

    在这个特定的案例中,我们关注的是如何在MFC应用中使用定时器功能。 `SetTimer`函数是Windows API中的一个关键函数,用于在应用程序中设置定时器。在MFC中,这个函数被封装在`CWinApp`类中,通过调用`SetTimer`成员...

    MFC的简单定时器(主要是C++)

    在这个例子中,我们可能会使用`CWinApp::SetTimer`,因为它更简洁,易于集成到MFC应用中。 1. **创建定时器**: 使用`CWinApp::SetTimer`方法,你可以设置一个定时器,指定间隔(以毫秒为单位)。例如,如果你想每...

    VC++ MFC 定时器函数 刷新窗口

    在VC++ MFC编程中,使用`SetTimer`和`KillTimer`函数可以方便地实现定时操作和窗口的定期刷新。通过合理的设置定时器标识符和重写`OnTimer`函数,可以轻松地管理多个定时器,并实现复杂的定时逻辑。此外,注意适时...

    MFC中使用OpenCV捕捉摄像头视频并在Image控件中播放

    8. 使用 SetTimer 函数来设置定时器 9. 使用 OnTimer 函数来处理定时器事件 10. 在 MFC 中使用 OpenCV 库来处理图像 总结来说,该资源为开发者提供了一个完整的解决方案,指导他们如何使用 OpenCV 库在 MFC 中捕捉...

    MFC状态栏显示系统时间

    在MFC中,可以使用SetTimer函数来安装定时器,并将其时间间隔设为1000毫秒。通过在OnCreate函数中添加代码,能够实现定时器的安装。 知识点3:时间处理函数的编写 通过ClassWizard为CMainFrame类加入WM_TIMER的消息...

    MFC实现内存使用监视器

    4. **定时更新**:为了实时显示内存使用情况,可以设置一个定时器(`SetTimer`函数),定期调用上述API并更新对话框中的控件,如静态文本控件或者进度条,来展示内存使用数据。 5. **用户界面**:在对话框上添加...

    在MFC 子线程中使用UI(控件)退出时死锁或者超时处理参考

    此外,也可以使用Windows API的SetTimer或自定义计时器来实现超时逻辑。 5. **退出问题**: 当子线程正在执行涉及UI的操作时,程序试图退出,可能会导致程序挂起。通常,应在子线程开始前设置一个退出标志,子线程...

    MFC位图定时移动

    3. **定时器机制**:为了实现位图定时移动,我们需要使用MFC的`Ctimer`类或者Windows API的`SetTimer`函数。定时器会定期触发消息,我们可以通过重载`OnTimer`消息处理函数来响应定时器事件,从而更新位图的位置。 ...

    MFC实现二维柱状图、散点图、饼图等

    为了实现数据的实时更新,你可能需要用到MFC的CWnd类中的`SetTimer`方法来设置定时器,定时触发更新事件。当定时器事件触发时,可以重新计算并绘制新的图形,这样就形成了动态的数据展示。同时,为了优化性能,通常...

    mfc实现绘制实时动态曲线

    在MFC中,可以使用CWinApp或CWnd的SetTimer函数来设置定时器,同时需要处理WM_TIMER消息。 在`OnDraw`函数中,我们需要先清除画布,一般使用CDC类的FillSolidRect方法填充背景色。然后,使用CDC的MoveTo和LineTo...

    使用定时器(MFC)示例代码 C++

    在这个"使用定时器(MFC)示例代码 C++"中,我们将探讨如何在MFC应用中创建和管理定时器。 首先,要在MFC应用中添加定时器,我们需要在适当的地方设置定时器。这通常在窗口类的成员函数中完成,比如`OnCreate`或`...

    mfc计数器的使用方法(秒表)

    在本文中,我们将深入探讨如何在MFC应用中使用计时器来创建一个简单的秒表功能。计时器是通过消息机制工作的,每当达到预设的时间间隔时,它会发送一条消息给关联的窗口。 首先,我们需要了解MFC中的两种主要类型的...

    MFC小闹钟 闹钟 MFC时钟 时间 Timer

    标题中的“MFC小闹钟 闹钟 MFC时钟 时间 Timer”暗示了这是一个使用Microsoft Foundation Class (MFC)库开发的小型应用程序,其主要功能是实现一个闹钟功能,可能包括显示当前时间并设置定时提醒。MFC是微软提供的...

    MFC编写的计时器

    在MFC中,我们可以使用`CWinApp::SetTimer`或`CWnd::SetTimer`来创建消息定时器,而使用`CreateTimerQueueTimer`或`SetWaitableTimer`来创建系统定时器。以下是如何使用`CWnd::SetTimer`创建一个消息定时器的示例: ...

Global site tag (gtag.js) - Google Analytics