看板 C_and_CPP 關於我們 聯絡資訊
我在case WM_CREATE下面寫了幾行對螢幕作輸出的碼,可是完全沒反應, 但是將程式碼移到WM_PAINT下面就成功了,這樣讓我覺得很奇怪, WM_PAINT不就只是一個當『畫面被遮住』或是『視窗大小改變』等等由 系統發出的message,去執行那部份而已嗎?那我一開始將原本應該放在 WM_PAINT下面的東西,寫到WM_CREATE裡面,為什麼會沒有作用。 我還用其他視窗遮住或是用InvalidateRect去觸發都沒有反應。 雖然我可以將程式碼照規矩寫到WM_PAINT下面,可是我想知道為什麼會這樣? 有人有經驗的可以分享一下嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.186.76
TeaEEE:DC的取得方式? 08/04 17:31
yourdog:WM_CREATE 是只有第一次創造物件時,用來初始成員而已 08/04 22:13
yourdog:它類似建構函式或是OnInitialDialog() 08/04 22:14
yourdog:所以你把視窗重繪動做寫在那裡要做甚麼?只有第一次會畫 08/04 22:15
worldxxi:可是他連一次都沒有畫我才覺得很奇怪,我完全沒遮住 08/04 22:36
yourdog:因為WM_CREATE在OninitialDialog之前作 08/04 22:40
yourdog:所以那時還沒有視窗實體..你要它怎麼畫 08/04 22:40
yourdog:你把它寫在OnintialDialog應該就會畫一次了 08/04 22:42
worldxxi:所以說"繪圖"這件事其實沒有一定要寫在wm_paint底下囉 08/05 08:07
worldxxi:回tea大 我一開始看不懂你說的 我有用GetDC和beginpaint 08/05 09:12
yourdog:你爽寫在那就寫在那..只要繪圖方法正確,視窗存在 08/05 21:27
yourdog:比如說你需要一個動畫,就先建一個計時器 08/05 21:30
yourdog:然後把繪圖動作寫在計時器裡..讓它故定格一時間畫一次圖 08/05 21:31