SetTimer定时器不起作用,为什么呀

时间:2022-12-01 19:36:34
新建一个工程就可以,
但是在这个工程里就是不行,不知道为什么?
利用向导建的,
BEGIN_MESSAGE_MAP(CCLDlg, CDialog)
//{{AFX_MSG_MAP(CCLDlg)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BKSCL, OnBkscl)
ON_BN_CLICKED(IDC_BSJBC, OnBsjbc)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

	afx_msg void OnTimer(UINT nIDEvent);
// afx_msg void Onkaishi();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

消息映射和声明都有
void CCLDlg::OnBkscl() 
{  
SetTimer(1,1000,NULL);
}
void CCLDlg::OnTimer(UINT nIDEvent) 
{
if(nIDEvent==1)
{
MessageBox("你好!XS"); 
        }
}

5 个解决方案

#1


SetTimer(1,1000,NULL);
似应放在
BOOL CCLDlg::OnInitDialog()
里面。

#2


定时器消息是优先级很低的消息, 只要消息队列中有消息, 定时器消息就不会被投递, 是否有什么阻塞操作? 

#3


void CCLDlg::OnBkscl() 
{  
    SetTimer(1,1000,NULL);
}

这个运行了没有啊?打个断点,跟踪一下看看.

#4


结贴了,至今不知道什么原因,后来也不用定时器了

#5


引用 4 楼 tywwwww 的回复:
结贴了,至今不知道什么原因,后来也不用定时器了

改用多线程了?

#1


SetTimer(1,1000,NULL);
似应放在
BOOL CCLDlg::OnInitDialog()
里面。

#2


定时器消息是优先级很低的消息, 只要消息队列中有消息, 定时器消息就不会被投递, 是否有什么阻塞操作? 

#3


void CCLDlg::OnBkscl() 
{  
    SetTimer(1,1000,NULL);
}

这个运行了没有啊?打个断点,跟踪一下看看.

#4


结贴了,至今不知道什么原因,后来也不用定时器了

#5


引用 4 楼 tywwwww 的回复:
结贴了,至今不知道什么原因,后来也不用定时器了

改用多线程了?