Re: [問題] 顯示的問題(BCB)
※ 引述《likecyndi ()》之銘言:
: 標題: [問題] 顯示的問題(BCB)
: 時間: Thu Jun 18 13:06:49 2009
:
: for(int i=0;i<100;i++)
: {
: Label1->Caption=i;
: Sleep(20);
: }
:
: 程式如上
: 我的想法是,Label上面可以從0跑到99
: 逐一顯示出來
:
: 可是程式實際跑出來,只會顯示99
: 純粹只是想知道,為什麼不能這樣寫??
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.121.136.120
: 推 stool100: i<100 當然是到 99 06/18 13:08
: → deh3215:本來就是0跑到99... 06/18 13:37
: 推 Bencrie:因為你改了一百次Caption之後才更新畫面 ... 06/18 13:39
: → Bencrie:既然你要從0跳到99,時間間隔又是固定的,何不用 Timer ? 06/18 13:40
: → likecyndi:不好意思 1~2樓的可能誤解我的意思 06/18 13:57
: → likecyndi:0~98的數字 並不會被顯示出來 而是只出現99 06/18 13:57
: → likecyndi:謝謝各位的指教 我知道可以用timer去run 06/18 13:58
: → likecyndi:只是好奇為什麼不能這樣寫 06/18 13:58
: 推 costbook:因為一瞬間就跑完了,你的眼睛看不到變化 06/18 14:08
: 推 QQ29:睡久一點 試試看 06/18 14:17
: → likecyndi:我試過睡很久 還是一樣 所以應該不是那個問題 06/18 14:30
和睡多久沒有關係.
可以猜想到, 原 po 應該在某個 gui component 的 event handler 做這
種事. 其實一般的 gui framework, 都會有一條 thread 負責處理 gui
的 event, invoke event handler, 和重繪畫面. 要是你在 event handler
中改 label 的 caption, 任你怎樣改, 它也要完成你的 event handler method
之後才可以繼續運作繼而才重繪畫面.
所以, 你應該以另一 thread 去改 label caption, 這樣才不會 把 gui
thread block 著. Timer 就是其中一種 "用另一thread" 的方法
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
推
06/18 15:35, , 1F
06/18 15:35, 1F
推
06/18 16:14, , 2F
06/18 16:14, 2F
推
06/25 08:52, , 3F
06/25 08:52, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章