[問題] MFC的TIMER呼叫兩次

看板C_and_CPP (C/C++)作者 (icarus)時間16年前 (2009/12/09 09:47), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
想請教一個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)

12/12 09:14, , 1F
QQ 沒人回答
12/12 09:14, 1F
文章代碼(AID): #1B7m76_V (C_and_CPP)
文章代碼(AID): #1B7m76_V (C_and_CPP)