![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() ![]() |
|
主題工具 | 顯示模式 |
![]() |
#1 |
管理員
![]() ![]() |
![]() 如何寫出 延遲 1 - 2 秒的時間的程式 ?
因為程式除錯時,要一直按單步執行有點累。 ![]() 或是要觀察變數的內容變化要做時間延遲 . . . ![]() |
__________________ 在「專業主討論區」中的問題解決後,要記得按一下 ![]() 這是一種禮貌動作。 ![]() 一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。 不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。 天線寶寶說再見啦~ ... 天線寶寶說再見啦~ 迪西:「再見~ 再見~」 『 Otaku Culture Party 』 關心您 ... ![]() |
|
![]() |
送花文章: 37855,
![]() |
![]() |
#6 (permalink) |
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() 因為while 是個空迴圈
所以運行中 CPU不只會 100%做工 就算在 windows的多工控制下 作其他事情也會反應慢半拍 所以以下是改良方式 語法:
#include <cstdlib> #include <iostream> #include <windows.h> #include <time.h> using namespace std; bool CheckMessageQueue() { MSG msg; while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){ if(msg.message==WM_QUIT) return false; TranslateMessage(&msg); DispatchMessage(&msg); } return true; } long Delay_DoEvents(int sec) { clock_t start_time; //delay,使用CLOCK function long number_of_times=0; start_time = clock(); while((clock() - start_time) < sec * CLOCKS_PER_SEC){ number_of_times= number_of_times+ (int)CheckMessageQueue(); } return number_of_times; } int main(int argc, char *argv[]) { Delay_DoEvents(5); system("PAUSE"); return EXIT_SUCCESS; } 實驗下雖然 CPU也會跑在100% 但 作其他事情就不會反應慢半拍 (比如運行時 作一個滑鼠點擊桌面下層視窗 的視窗切換動作,沒有DoEvents設計的程式 就要等windows介入調配,而用上面的程式就可馬上執行視窗切換的動作,毫無延宕) |
![]() |
送花文章: 2030,
![]() |
![]() |
#7 (permalink) | |
管理員
![]() ![]() |
![]() 引用:
目前知道可以延遲時間的方法又多了一種 首先是 snoopy 大大說的,空回圈 或巣狀空回圈 後來有找某些書本上說,容易受到電腦等及影響 ... 而且 for loop 會受到 變數類型限制,巣狀的話 可以達到一個 for loop 做不倒的延遲效過,但是 時間的延遲上而不好抓,只能概算一下 再來是 kinco 大大說的,用時間函式的方法 時間的準度有了,但似乎會影響 Windows 的其他程式運算 (跟 mini 大大說的一樣)... 最後是 mini 大大說的,改良版方法吧... 是很好的但是 以我目前的程度來說,可能高檔了些... DEV-C 在 .c 的原始碼底下就不能編譯了,但在 .cpp 底下 OK 這應該是 C++ 的語法吧,學校還沒教...,我也一直想學, 但書局的書...,試問一下是要學 Borland C++ 還是微軟的 C++ 哪個好阿 . . . |
|
![]() |
送花文章: 37855,
![]() |