激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月


主題:EM9170:雙緩沖文字輸出老是出問題,幫看看

  共有46736人關注過本帖    
帥哥喲,離線,有人找我嗎?
shepher
1樓 信息 | 搜索 | 郵箱


加好友 發短信
EM9170:雙緩沖文字輸出老是出問題,幫看看  發帖心情 Post By:2012-11-18 10:51:00   [只看該作者]

最近做一個監控界面,需要使用大字體刷新測量數據,出現故障時需要將字色變為紅色

我定義了一個CColorStatic類
在OnPaint中寫的輸出

CPaintDC dc(this);
CDC m_hdcMem;
CBitmap m_hBitmap;

if (m_hdcMem.CreateCompatibelDC(NULL) == 0)
{
    m_hdcMem.DeleteDC();
    return;
}

CRect rect;

GetClientRect(&rect);

if (m_hBitmap.CreateCompatibleBitmap(&dec, Rect.Width() + 1, rect.Height() + 1) == 0)
{
    m_hBitmap.DeleteObject();
    m_hdcMem.DeleteDC();
    return;

}

CBitmap * m_hOldBMP = m_hdcMem.SelectObject(&m_hBitmap);

CString strText = _T("");
GetWindowText(strText);
....

m_hdcMem.FillRect(&rect, m_pBrush);//填充黑色
CFont * m_hOldFont = m_hdcMem.SelectObject(&m_font); //使用大字體
m_hdcMem.SetTextColor(m_rgbText);
m_hdcMem.SetBkMode(TRANSPARENT);
m_hdcMem.DrawText(strText, rect, nFormat); 
//nFormat是設置文字左中右的,用的DWORD dwStyle = GetStyle()

dc.BitBlt(0, 0, rect.Width(), rect.Height(), &m_hdcMem, 0, 0, SRCCOPY);

m_hdcMem.SelectObject(m_hOldFont);

m_hdcMem.SelectObject(m_hOldBMP);
m_hBitmap.DeleteObject();
m_hdcMem.DeleteDC();


界面上有10個CColorStatic控件需要刷新,刷新頻率為1秒一次
發現程序運行后,開頭30秒左右內存使用一直沒問題,之后大約4秒左右
程序使用內存增加4K的樣子,時間久了之后,如果打開其他功能界面,
就會出現一些CColorStatic框變成了其他功能界面的圖形,且在也不能刷新了

在調試過程中試過將刷新的timer禁用,內存一直不會增長。
試過將BitBlt這一句注釋,發現內存也不會增長。。。。。!!!

現在就不知道是哪兒的問題了。

高手幫看看


  單帖管理 | 引用 | 回復 回到頂部
帥哥喲,離線,有人找我嗎?
yy
2樓 信息 | 搜索 | 郵箱


加好友 發短信
  發帖心情 Post By:2012-11-19 10:28:00   [只看該作者]

光這段代碼沒看出有什么問題,也與內存無關。OnPaint是當窗口刷新時才會調用,一般是窗口顯示或者頂層遮擋的窗口移動的時候才行。你這個情況感覺OnPaint根本沒有被調用到,你的timer里是怎么刷新窗口的呢?用Invalidate?要不你去掉部分控件窗口,然后在OnPaint里面設個斷點,然后看看出問題時這個OnPaint到底調用到沒有。

  單帖管理 | 引用 | 回復 回到頂部
帥哥喲,離線,有人找我嗎?
yy
3樓 信息 | 搜索 | 郵箱


加好友 發短信
  發帖心情 Post By:2012-11-21 13:43:00   [只看該作者]

看了你的代碼,發現只要使用了自定義控件,在刷新控件的時候就可能會4kb,4kb這樣增加占用的內存,當增加到一定程度后就會開始有釋放,然后穩定在一個位置,估計是GDI的一個機制吧,不是你代碼的問題,關閉窗口后過一會這部分內存就釋放了,不會影響到應用,你可以通過設置將用戶使用內存再設大些。
[此貼子已經被作者于2012-11-21 13:43:40編輯過]

  單帖管理 | 引用 | 回復 回到頂部
帥哥喲,離線,有人找我嗎?
yy
4樓 信息 | 搜索 | 郵箱


加好友 發短信
  發帖心情 Post By:2012-11-22 11:05:00   [只看該作者]

恩,這個問題算解決了。
如果自定義控件,并且重寫了ON_WM_ERASEBKGND的處理函數,擦背景時就容易導致4kb的內存占用,所以只有使用Invalidate(FALSE);更新時不擦除背景。
或者不要重寫這個消息的處理函數,就不會出問題了。

  單帖管理 | 引用 | 回復 回到頂部

返回首頁

EM9170:雙緩沖文字輸出老是出問題,幫看看

用戶名:
            驗證碼: 驗證碼,看不清楚?請點擊刷新驗證碼
內容:
主站蜘蛛池模板: 久久成人综合| 欧美丰满丝袜videossex| www.看片| 日韩国产三级| 在线欧洲成人免费视频| 欧美a一级| 国产一级性片| 国产综合成色在线视频| 黄色w站| 97青青青国产在线播放| 国产色啪午夜免费视频| 老汉tv永久视频福利在线观看| 手机看片高清国产日韩片| 在线观看黄色一级片| 欧美三级毛片| 国内精品一区二区三区| 国产美女视频国产视视频| 草草线禁成18年在线视频| 国产亚洲日本| 午夜影皖普通区| 亚洲性后网| 在线免费国产| 91亚洲人成手机在线观看| 一区二区三区影视| 毛片爽爽爽免费看| 亚洲精品日本高清中文字幕| 色综合中文字幕在线亚洲| 青青青国产在线观看免费| 欧美视频一区二区在线观看| 国产下药迷倒白嫩美女网站| 国产剧情精品在线| 国产香蕉视频| 国产免费1000拍拍拍| 黄色一级片美国| 麻豆射区| 黄站无毒不卡秒播网站免费观看| 精品色视频| 黄色录相一级片| 高清在线不卡| 美女性高潮视频| 夜色成人网|