作者icarusming (icarus)
看板C_and_CPP
标题[问题] MFC的TIMER呼叫两次
时间Wed Dec 9 09:47:47 2009
想请教一个MFC的问题
我目前在写 Dialog based 的 MFC
可是不知道为什麽
每次onTimer都会执行两次 @@"
code如下:
#define IDT_TIMER_0 1000 //确定没有和程式里别的ID重复
BEGIN_MESSAGE_MAP(CtestButtonPressDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON1, &CtestButtonPressDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON, &CtestButtonPressDlg::OnBnClickedButton)
ON_WM_KEYDOWN()//IDC_BUTTON,&CtestButtonPressDlg::OnKeyDown)
ON_WM_KEYUP()//IDC_BUTTON,&CtestButtonPressDlg::OnKeyUp)
ON_BN_DOUBLECLICKED(IDC_BUTTON,
&CtestButtonPressDlg::OnBnDoubleclickedButton)
END_MESSAGE_MAP()
BOOL CtestButtonPressDlg::OnInitDialog()
{
CDialog::OnInitDialog();
....
m_TimerID = SetTimer (IDT_TIMER_0, 1000, NULL);
...
}
void CtestButtonPressDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent == m_TimerID)
{
KillTimer(nIDEvent);
pFile = fopen ("myfile.txt","a");
fprintf (pFile, " %u ",GetTickCount());
fclose (pFile);
SetTimer (m_TimerID, 1000, NULL);
}
CDialog::OnTimer(nIDEvent);
}
结果是每次相同的tickcount都会印两次
试过把KillTimer和SetTimer都拿掉
timer也会跑
还是一样的结果 onTimer跑两次
尝试着用Debug Mode去看nIDEvent的值
发现他除了每次时间到都回传两次m_TimerID的值以外
有时候也会回传1
想过可能是print的问题 改用ofstream 结果还是一样 QQ
请问这是为什麽呢
感谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.225.27
※ 编辑: icarusming 来自: 140.112.225.27 (12/09 09:49)
※ 编辑: icarusming 来自: 140.112.225.27 (12/09 11:38)
1F:→ icarusming:QQ 没人回答 12/12 09:14