定时器

timeSetEvent
https://blog.csdn.net/xieyunc/article/details/4136125
timeKillEvent
/取消一个指定的定时器事件

应用例子
https://blog.csdn.net/u011555996/article/details/77587799
CWnd::KillTimer
终止通过标识的计时器事件nIDEvent早期调用SetTimer。

	BOOL KillTimer(UINT_PTR nIDEvent);

参数
nIDEvent

计时器事件的值传递给SetTimer。
返回值
指定函数的结果。 值为非零,如果事件已终止。 如果为 0KillTimer成员函数找不到指定的计时器事件。
备注
挂起WM_TIMER与计时器相关联的消息不会从消息队列。
示例
有关示例,请参阅CWnd::SetTimer。

CWnd::SetTimer
安装系统计时器。

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

参数
nIDEvent

指定非零计时器标识符。 如果计时器标识符是唯一的则在此相同的值返回SetTimer。 否则为SetTimer确定新的唯一值,并返回该对象。 针对窗口计时器 (它具有 NULL 回调功能),值必须是唯一仅适用于其他窗口计时器是与当前窗口相关联。 针对回调计时器,值必须是唯一的所有进程中的所有计时器。 因此,在创建回调计时器时,很有可能返回的值可能不同于您指定的值。
nElapse

指定的超时值或间隔时间,以毫秒为单位。
lpfnTimer

指定的应用程序提供的地址TimerProc处理的回调函数WM_TIMER消息。 如果此参数为 NULL,WM_TIMER 消息放在应用程序的消息队列中并由处理CWnd对象。
返回值
如果函数运行成功,新的计时器的计时器标识符。 此值可能或可能不是通过传递中的值相等nIDEvent参数。 应用程序应始终将传递到的返回值KillTimer成员函数以计时器。 如果成功,则非零值否则为为 0。
备注
指定了间隔值,并且每次间隔过后,系统发布到安装的应用程序的安装消息队列 WM_TIMER 消息或消息传递到应用程序定义TimerProc回调函数。
LpfnTimer回调函数不需要命名为TimerProc,但它必须声明为静态的定义,如下所示。

void CALLBACK TimerProc(
HWND hWnd,   // handle of CWnd that called SetTimer
UINT nMsg,   // WM_TIMER
UINT_PTR nIDEvent,   // timer identification
DWORD dwTime    // system time);

示例
此示例使用CWnd::SetTimer, CWnd::OnTimer,和CWnd::KillTimer处理 WM_TIMER 消息。 第一个计时器设置为将 WM_TIMER 消息发送到主框架窗口中每隔 2 秒OnStartTimer。 OnTimer事件处理程序处理主框架窗口的 WM_TIMER 消息。 此方法可导致 PC 扬声器每 2 秒发出提示音。 第二个计时器回调函数每 3.75 秒将发送一条消息。 OnStopTimer 将通过调用停止这两个计时器CWnd::KillTimer为每个计时器 id。
C++

void CMainFrame::OnStartTimer() 

{
// This timer uses a WM_TIMER message, not a callback.
// Therefore, the timer is specific to this window.
// m_nWindowTimer is a UINT_PTR field.
m_nWindowTimer = SetTimer(1, 2000, NULL);

// For this demo, we specify an interval that won’t overlap
// with the window timer.
m_nCallbackTimer = SetTimer(2, 3750, &CMainFrame::MyTimerProc);

// See whether we got the ID we requested in the first parameter.

#ifdef _DEBUG
CString str;
str.Format(_T(“m_ncallbackTImer ID = %d”), m_nCallbackTimer);
TRACE(str);
#endif

}

void CALLBACK CMainFrame::MyTimerProc(
HWND hWnd, // handle of CWnd that called SetTimer
UINT nMsg, // WM_TIMER
UINT_PTR nIDEvent, // timer identification
DWORD dwTime // system time
)
{
MessageBeep(0x00000030L); // Windows question sound.
}

void CMainFrame::OnStopTimer()
{
KillTimer(m_nWindowTimer);
KillTimer(m_nCallbackTimer);
}

void CMainFrame::OnTimer(UINT nIDEvent)
{
MessageBeep(0xFFFFFFFF); // Beep

// Call base class handler.
CMDIFrameWnd::OnTimer(nIDEvent);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值