• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            簡易定時器設計

            需求:

                  要運用番茄時間管理,沒有像文中所說的定時器,用手機也怎么方便,因為本身就經常是在計算機前工作學習的。那么下一個軟件呢?有那么一款PomoTime,既包含了定時的功能,又含有添加Todolist,統計當天的番茄時間等的功能,而我僅僅需要一個定時功能,因為對于Todolist還是希望采用紙筆的方式進行記錄。原來嘗試看桌面右下角的時間,還判斷一個番茄時間是否結束,發現工作中,往往因為過于集中注意力或分散注意力瀏覽網頁去了而忘記對時間的查看,同時又想將自己所學的知識進行運用,于是想到了這么個方式,自己編寫一個簡易的定時器吧。

            功能描述:

            1. 顯示分,秒,處于桌面最前面;

            2. 設定分,秒;

            3. 當設定的時間消耗完后會彈出對話框,進行提醒;

            (這里沒有采用聲音提醒的原因是若采用這種方式,會影響到別人的辦公與學習。)

            語言選擇:

            由于這僅僅是一個很簡單的功能實現,對于語言沒有很大的要求,選擇了C++,庫為wxWidget。

            界面設計:

            使用wxFormBuilder

            關鍵點描述:

                在整個過程中遇到的問題的地方時,如何進行倒計時?最先想到的就是onTimer這樣類似的功能,在wxWidget庫中找到了具有該功能的wxTimer類,在手冊中這么一句話 its precision is platform-dependent, but in general will not be better than 1ms nor worse than 1s. 也就是說采用該方法進行時間設定可能每一次都會造成1ms-1s時間上的誤差,這個誤差不是很大,對于整個的設計目的并沒有太大的影響。

                全部源碼在Simple timer source code

                關于時間處理的部分代碼如下:

               1: // timer_app.h
               2: ////////////////////////////////////////////////////////////////////////////////
               3: // main application frame declaration
               4: ////////////////////////////////////////////////////////////////////////////////
               5:  
               6: class TimerFrame : public MainDialogBase
               7: {
               8: public:
               9:     TimerFrame( wxWindow *parent );
              10:     virtual ~TimerFrame();
              11:  
              12: protected:
              13:     // protected event handlers
              14:     virtual void OnCloseDialog( wxCloseEvent& event );
              15:     virtual void OnSetButtonClick( wxCommandEvent& event );
              16:     virtual void OnStartButtonClick( wxCommandEvent& event );
              17:     
              18: public:
              19:     void OnTimer( wxTimerEvent& event );
              20:     
              21: private:
              22:     int m_minute;
              23:     int m_second;
              24:     wxTimer *m_clock;
              25:     wxDECLARE_EVENT_TABLE();    
              26: };
              27:  
              28: // timer_app.cpp
              29: // event list, combine timer event with OnTimer function
              30: wxBEGIN_EVENT_TABLE(TimerFrame, MainDialogBase)
              31: EVT_TIMER(TIMER_ID, TimerFrame::OnTimer)
              32: wxEND_EVENT_TABLE()
              33:  
              34: //......some code......
              35:  
              36: TimerFrame::TimerFrame(wxWindow *parent) : MainDialogBase( parent )
              37: {
              38:     m_clock = new wxTimer();               // create a new wxTimer
              39:     m_clock->SetOwner(this, TIMER_ID);     // set owner, #define TIMER_ID 1000
              40:     m_minute = 25;
              41:     m_second = 0;
              42: }
              43:  
              44: //......some code......
              45:  
              46: // count down the time and show
              47: void TimerFrame::OnTimer(wxTimerEvent& event)
              48: {
              49:     // determine the minute and second wait to show
              50:     if (m_second == 0 && m_minute == 0) {
              51:         m_clock->Stop();
              52:         wxMessageBox(wxT("Time over"),wxT("Timer"));
              53:         return;
              54:     } else if (m_second ==0) {
              55:         m_second = 59;
              56:         m_minute -= 1;
              57:     } else {
              58:         m_second -= 1;
              59:     }
              60:     wxString sTmp;
              61:     sTmp.Printf(wxT("%d"),m_minute);
              62:     m_minuteTextCtrl->SetValue(sTmp);
              63:     sTmp.Printf(wxT("%d"),m_second);
              64:     m_secondTextCtrl->SetValue(sTmp);
              65: }
              66:  

            posted on 2012-06-28 15:35 鐘謝偉 閱讀(1441) 評論(3)  編輯 收藏 引用

            評論

            # re: 簡易定時器設計[未登錄] 2012-06-30 18:16 春秋十二月

            乍一看標題還以為是講定里器的原理、設計及實現,以前寫過應用層的定里器,底層的數據結構可以是數組、堆、哈希、鏈表,性能各不一樣,可據需求選擇。  回復  更多評論   

            # re: 簡易定時器設計 2012-06-30 20:02 鐘謝偉

            @春秋十二月
            額 躺著中中槍,成標題黨了,對于定時器在學習數電的時候用電路圖搭過電路,想必學過的都有這么個實驗,不過對于深層的原理真不清楚,請問曾寫過的內容在網上有沒有可尋之處呢,給個網址。。謝謝  回復  更多評論   

            # re: 簡易定時器設計[未登錄] 2012-07-01 01:00 春秋十二月

            ace,boost,linux kernel都有實現源碼,可以研究下。  回復  更多評論   

            <2012年5月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆檔案

            IT網站

            My Friends

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久99精品久久只有精品| 久久久无码人妻精品无码| 久久人人爽人人爽AV片| 久久久受www免费人成| 久久亚洲日韩看片无码| 久久精品免费观看| 亚洲国产成人精品久久久国产成人一区二区三区综 | 日韩精品久久久久久| 亚洲va久久久久| 青青青国产精品国产精品久久久久 | 99久久精品国产一区二区| 久久精品国产亚洲麻豆| 日本强好片久久久久久AAA | 成人久久免费网站| 久久久久人妻一区精品| AAA级久久久精品无码片| 久久乐国产综合亚洲精品| 中文字幕亚洲综合久久| 久久久亚洲欧洲日产国码aⅴ| 亚洲精品无码专区久久同性男| 狠狠色丁香婷综合久久| 久久夜色精品国产噜噜亚洲AV| 欧美伊人久久大香线蕉综合 | 日韩精品久久无码人妻中文字幕| 久久www免费人成看国产片| 日本精品久久久久中文字幕| 久久精品国产亚洲AV香蕉| 久久久久久伊人高潮影院| 欧美成人免费观看久久| 欧美亚洲国产精品久久久久| 人妻无码久久精品| 国产精品99久久久精品无码| 狠狠色丁香久久婷婷综合蜜芽五月| 久久亚洲国产成人精品无码区| 久久久久久噜噜精品免费直播| 久久国产精品免费一区二区三区| 91精品免费久久久久久久久| 久久九九久精品国产免费直播| 久久九色综合九色99伊人| 国产精品久久久天天影视香蕉| 久久久久国产精品嫩草影院|