[問題] MFC Dialog畫面重繪

看板C_and_CPP作者 (幻楓滅影)時間13年前 (2010/10/28 07:45), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 在MFC的Dialog中 假使希望按下某個按鈕後改變了變數的數值 利用已改變的數值重繪 Dialog的話 要在下面輸入 Invalidate(); 即可將畫面清空並重繪 那請問應該如何能達到保留原本畫面上的樣式 並將新變數造成的圖案繪製在原圖下方呢? 麻煩各位幫忙解答 謝謝~ 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.129.148

10/28 09:58, , 1F
沒記錯的話,Invalidate()會觸發OnPaint(),在OnPaint裡
10/28 09:58, 1F

10/28 09:59, , 2F
把EraseBackground攔掉
10/28 09:59, 2F

10/28 10:03, , 3F
不過如果不做EraseBackground,視窗只要一重疊,畫面就
10/28 10:03, 3F

10/28 10:04, , 4F
毀了...你要不要考慮把先前畫過的用個資料結構存起來,每
10/28 10:04, 4F

10/28 10:04, , 5F
次都重畫比較保險?
10/28 10:04, 5F

10/28 21:59, , 6F
在OnPaint()裡面並沒看到ErasBackground耶~
10/28 21:59, 6F

10/29 09:37, , 7F
Invalidate(false)試試
10/29 09:37, 7F

10/29 21:35, , 8F
成功了 謝謝~
10/29 21:35, 8F
文章代碼(AID): #1CoBcgLD (C_and_CPP)