[問題] windows api 請問有可能在WM_PAINT之外的地方對螢幕作輸出嗎

看板C_and_CPP作者 (風)時間15年前 (2009/08/04 13:44), 編輯推噓4(409)
留言13則, 3人參與, 最新討論串1/1
我在case WM_CREATE下面寫了幾行對螢幕作輸出的碼,可是完全沒反應, 但是將程式碼移到WM_PAINT下面就成功了,這樣讓我覺得很奇怪, WM_PAINT不就只是一個當『畫面被遮住』或是『視窗大小改變』等等由 系統發出的message,去執行那部份而已嗎?那我一開始將原本應該放在 WM_PAINT下面的東西,寫到WM_CREATE裡面,為什麼會沒有作用。 我還用其他視窗遮住或是用InvalidateRect去觸發都沒有反應。 雖然我可以將程式碼照規矩寫到WM_PAINT下面,可是我想知道為什麼會這樣? 有人有經驗的可以分享一下嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.186.76

08/04 17:31, , 1F
DC的取得方式?
08/04 17:31, 1F

08/04 22:13, , 2F
WM_CREATE 是只有第一次創造物件時,用來初始成員而已
08/04 22:13, 2F

08/04 22:14, , 3F
它類似建構函式或是OnInitialDialog()
08/04 22:14, 3F

08/04 22:15, , 4F
所以你把視窗重繪動做寫在那裡要做甚麼?只有第一次會畫
08/04 22:15, 4F

08/04 22:36, , 5F
可是他連一次都沒有畫我才覺得很奇怪,我完全沒遮住
08/04 22:36, 5F

08/04 22:40, , 6F
因為WM_CREATE在OninitialDialog之前作
08/04 22:40, 6F

08/04 22:40, , 7F
所以那時還沒有視窗實體..你要它怎麼畫
08/04 22:40, 7F

08/04 22:42, , 8F
你把它寫在OnintialDialog應該就會畫一次了
08/04 22:42, 8F

08/05 08:07, , 9F
所以說"繪圖"這件事其實沒有一定要寫在wm_paint底下囉
08/05 08:07, 9F

08/05 09:12, , 10F
回tea大 我一開始看不懂你說的 我有用GetDC和beginpaint
08/05 09:12, 10F

08/05 21:27, , 11F
你爽寫在那就寫在那..只要繪圖方法正確,視窗存在
08/05 21:27, 11F

08/05 21:30, , 12F
比如說你需要一個動畫,就先建一個計時器
08/05 21:30, 12F

08/05 21:31, , 13F
然後把繪圖動作寫在計時器裡..讓它故定格一時間畫一次圖
08/05 21:31, 13F
文章代碼(AID): #1ATygnnt (C_and_CPP)