Re: [問題] 顯示的問題(BCB)

看板C_and_CPP (C/C++)作者 (Alien)時間16年前 (2009/06/18 14:38), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《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
sleep前加Application->ProcessManagement試看看
06/25 08:52, 3F
文章代碼(AID): #1AEU3P-r (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AEU3P-r (C_and_CPP)