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ù)里 一般的方式是 寫一個(gè) swith(InEvent) case 語句來實(shí)現(xiàn) 每隔多久 執(zhí)行一個(gè)函數(shù) 來實(shí)現(xiàn)定時(shí)的功能 可是 如果有好幾個(gè)定時(shí)器 ,OnTimer 執(zhí)行的 頻率是怎么樣的呢? 他求這幾個(gè)定時(shí)器的第2個(gè)參數(shù) 也就是定時(shí)間隔的最大是值 作為OnTimer函數(shù)的 執(zhí)行時(shí)間間隔 假如有2個(gè)定時(shí)器 SetTimer(1,500,NULL) SetTimer(2,1000,NULL) OnTimer 里 是這么寫的 if (nIDEvent == 1) Draw3(); 這里 每1秒鐘 Draw 執(zhí)行 Draw1 2次, 執(zhí)行 Draw2 1次 , 但是會(huì)執(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() |
|