主題:EM9170:雙緩沖文字輸出老是出問題,幫看看 共有46787人關注過本帖 |
---|
yy |
1樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2012-11-19 10:28:00 [顯示全部帖子]
光這段代碼沒看出有什么問題,也與內存無關。OnPaint是當窗口刷新時才會調用,一般是窗口顯示或者頂層遮擋的窗口移動的時候才行。你這個情況感覺OnPaint根本沒有被調用到,你的timer里是怎么刷新窗口的呢?用Invalidate?要不你去掉部分控件窗口,然后在OnPaint里面設個斷點,然后看看出問題時這個OnPaint到底調用到沒有。
|
單帖管理 | 引用 | 回復 |
yy |
2樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2012-11-21 13:43:00 [顯示全部帖子]
看了你的代碼,發現只要使用了自定義控件,在刷新控件的時候就可能會4kb,4kb這樣增加占用的內存,當增加到一定程度后就會開始有釋放,然后穩定在一個位置,估計是GDI的一個機制吧,不是你代碼的問題,關閉窗口后過一會這部分內存就釋放了,不會影響到應用,你可以通過設置將用戶使用內存再設大些。
[此貼子已經被作者于2012-11-21 13:43:40編輯過]
|
單帖管理 | 引用 | 回復 |
yy |
3樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2012-11-22 11:05:00 [顯示全部帖子]
恩,這個問題算解決了。
如果自定義控件,并且重寫了ON_WM_ERASEBKGND的處理函數,擦背景時就容易導致4kb的內存占用,所以只有使用Invalidate(FALSE);更新時不擦除背景。 或者不要重寫這個消息的處理函數,就不會出問題了。
|
單帖管理 | 引用 | 回復 |