如何销毁settimer定时器

如何销毁settimer定时器,第1张

KillTimer函数用于卖好销毁一个计时器。计时器属于系统资源,使用完应及时销毁。

KillTimer的函数原型为:BOOL KillTimer( HWND hWnd, UINT_PTR uIDEvent ) 参数意义同SetTimer。

于KillTimer对消息队列中剩余未处理的WM_TIMER消息的影响,MSDN和Programming

Windows上的说法完全相反。耐樱MSDN的说法很干脆:The KillTimer function does not remove

WM_TIMER messages already posted to the message queue. 而petzold则说 The

KillTimer call purges the message queue of any pending WM_TIMER

messages. Your program will never receive a stray WM_TIMER message

following a KillTimer call.

(KillTimer消除消息队列中任何未处理的WM_TIMER消息,调用KillTimer后你的程序昌配丛永远不会收到一条“漂泊游荡”的

WM_TIMER消息)

代码说话吧。

运行立刻崩溃,和OnTimer代码应该没什么关系,和OnInitDialog里面的代码可能有关系。

BOOL CDlgTestDlg::OnInitDialog()

{

CDialog::OnInitDialog()

// Set the 茄脊icon for this dialog. 滚饥 The framework does this automatically

//  when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE) // Set big icon

SetIcon(m_hIcon, FALSE) // Set small 颤备渗icon

// TODO: Add extra initialization here

SetTimer(1,5000,NULL)

return TRUE  // return TRUE  unless you set the focus to a control

}

void CDlgTestDlg::OnTimer(UINT nIDEvent) 

{

// TODO: Add your message handler code here and/or call default

if(nIDEvent==1)

{

KillTimer(1)

CDialog::OnOK()

}

CDialog::OnTimer(nIDEvent)

}

经测试,代码没有问题,VC6运行无误。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12236997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存