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运行无误。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)