UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) ); Return Value The timer identifier of the new timer if the function is successful. An application passes this value to the KillTimer member function to kill the timer. Nonzero if successful; otherwise 0. Parameters nIDEvent Specifies a nonzero timer identifier. nElapse Specifies the time-out value, in milliseconds. lpfnTimer Specifies the address of the application-supplied TimerProc callback function that processes the WM_TIMER messages. If this parameter is NULL, the WM_TIMER messages are placed in the application’s message queue and handled by the CWnd object. 再OnTimer 函數(shù)里 一般的方式是 寫一個 swith(InEvent) case 語句來實現(xiàn) 每隔多久 執(zhí)行一個函數(shù) 來實現(xiàn)定時的功能 可是 如果有好幾個定時器 ,,OnTimer 執(zhí)行的 頻率是怎么樣的呢,? 他求這幾個定時器的第2個參數(shù) 也就是定時間隔的最大是值 作為OnTimer函數(shù)的 執(zhí)行時間間隔 假如有2個定時器 SetTimer(1,500,,NULL) SetTimer(2,,1000,NULL) OnTimer 里 是這么寫的 if (nIDEvent == 1) Draw3(); 這里 每1秒鐘 Draw 執(zhí)行 Draw1 2次,, 執(zhí)行 Draw2 1次 ,, 但是會執(zhí)行 Draw3 2+1 次 就理解這么多 CODE: 說明 m_edit1_ ,m_edit2_ ,m_edit3_ 是 (CEdit )控件變量 int 型 添加消息事件處理函數(shù) OnCreate() OnTimer 消息映射 OnOK void CMy444444Dlg::OnOK() int CMy444444Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct) void CMy444444Dlg::OnTimer(UINT nIDEvent) Draw3(); void CMy444444Dlg::Draw1() void CMy444444Dlg::Draw2() void CMy444444Dlg::Draw3() |
|