<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Windows計時器是一個非常有用的編程元素,而且計時器的使用非常簡單,我們只需要一個時間間隔參數來調用SetTimer函數設置和啟動計時器,通過WM_TIMER消息的響應函數進行計時器控制,調用KillTimer函數停止計時器。 但是由于Windows是一個非實時操作系統,所以如果我們定義的時間間隔小于100ms的時候,計時器可能不會很準確。所以,對于有些時間要求比較高的情況,我們需要使用多媒體高精度計時器來完成計時,它的精度可以達到1ms。 下面結合實例詳細講述計時器和多媒體高精度計時器使用方法(完整實例可在我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/8328525](http://download.csdn.net/detail/margin1988/8328525)) ⑴ ?普通計時器的使用方法: 1> 在.h文件中添加計時器和消息響應函數: ~~~ int m_time;//計數器編號 afx_msg void OnTimer(UINT_PTR nIDEvent); ~~~ 2> 在.cpp文件中添加WM_TIMER的消息響應宏: ~~~ int m_count=0;//計時全局計數變量 BEGIN_MESSAGE_MAP (CPoint21Dlg, CDialog) ON_WM_TIMER() //WM_TIMER消息響應宏 END_MESSAGE_MAP () ~~~ 3>?啟動計時器: ~~~ m_count = 0; m_time = SetTimer(1,1000,NULL); ASSERT (m_time != 0); for (int i=0;i<10000;i++){ //uses up CPU cycles } if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE)){ ::TranslateMessage(&msg); ::DispatchMessage(&msg); } ~~~ 4>?計數控制: ~~~ void CPoint21Dlg::OnTimer(UINT_PTR nIDEvent){ m_count++; } ~~~ 5>?停止計時器: ~~~ KillTimer (m_time); ~~~ (2) 多媒體高精度計時器的使用方法: 1>?包含相關頭文件和庫: ~~~ #include <mmsystem.h> #pragma comment(lib, "WINMM.LIB") ~~~ 2>?設置并啟用多媒體計時器: ~~~ int m_acc=0;//全局計數變量 static UINT m_nTimerID=0;//多媒體計數器編號 //自定義配置及啟動多媒體計數器函數 void CPoint21Dlg::MultimediaTimer(){ TIMECAPS tc; //獲得定時器分辨率 if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR){ return; } UINT nResolution = min(max(tc.wPeriodMin, 1), tc.wPeriodMax); UINT nInterval = 1; if (nInterval < nResolution){ nInterval = nResolution; } //設置定時最小分辨率 timeBeginPeriod(nResolution); //設置定時器 m_nTimerID = timeSetEvent (4, nResolution, CPoint21Dlg::CallBackFuncTimer,(DWORD)this, TIME_PERIODIC); } ~~~ 3>?計數控制: ~~~ void CALLBACK CPoint21Dlg::CallBackFuncTimer(UINT wTimerID,UINT msg,DWORD dwUser,DWORD dw1,DWORD dw2){ m_acc++; } ~~~ 4>?停止多媒體計時器: ~~~ timeKillEvent (m_nTimerID); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看