国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++定時器Timer在項目中的使用方法

2020-01-26 13:28:15
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于C++定時器Timer在項目使用的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

1、情況說明

由于最近要在項目里做彈出彈幕,要求是彈出1秒后消失,一開始我使用空循環進行計時,發現執行到這段代碼CPU占用率上升十幾個百分點,后來改成定時器實現,發現CPU表現正常。

2、空循環實現

ShowWindow(true);time_t start_time = GetTickCount();time_t now_time = start_time;while((now_time - start_time) <= 1000){now_time = GetTickCount();};ShowWindow(false);

后來查了一下資料,空循環為啥使CPU占用率大幅升高,空循環執行快,在一個單位時間內會被調度很多次;再者是因為現在cpu占用率的算法。

3、定時器實現

首先要包含<Windows.h>

可以設置定時器,也可以殺死它。

每個定時器都有一個id,設置定時器的時候可以自己設置它,方便后面定時器的管理。

設置定時器的時候需要設置回調函數。

這部分代碼如下

#include<Windows.h>void CALLBACK HideWnd(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime);//回調函數聲明//這2行在需要調用的時候調用,比如需要彈幕彈出來的時候。ShowWindow(true);SetTimer(m_hWnd,1, 1000, HideWnd);void CALLBACK HideWnd(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)//回調函數{ ShowWindow(hwnd, false); KillTimer(hwnd,1);}

我這里在回調里面把定時器殺死了,這就實現了單次執行。若是想每隔1秒執行一次回調,可以不在回調中殺死定時器,在合適的地方再管理它。定時器每到時間,都會發WM_TIME消息,我們也可以響應這個消息去處理,這樣可以不用在回調中寫code。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 团风县| 陇西县| 东莞市| 毕节市| 永川市| 霍山县| 抚宁县| 武定县| 鄂尔多斯市| 开平市| 杭锦旗| 留坝县| 睢宁县| 房产| 通化县| 乌拉特前旗| 张家界市| 湘乡市| 高碑店市| 莎车县| 青川县| 怀远县| 尚义县| 揭阳市| 嘉禾县| 吉隆县| 乌兰察布市| 荥经县| 西乌| 伊通| 咸宁市| 抚顺县| 康马县| 桐柏县| 手游| 泰和县| 邵阳县| 景德镇市| 合阳县| 正定县| 双鸭山市|