久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 對話框OnCtlColor的資源泄露問題 [打印本頁]

作者: 51hei社區    時間: 2016-1-16 03:07
標題: 對話框OnCtlColor的資源泄露問題
上回說到使用gdiview可以查看資源的使用情況, 可以大概判斷下是什么資源泄露了, 但是定位具體的問題, 還要回到代碼中來,還好代碼比較少,分析分析,基本也就能找到地方,這里問題發生在這個對話框



在OnCtlColor里面犯了錯誤,

HBRUSH b=CreateSolidBrush(m_colorBoard);
return b;
原來沒有注意, 這個mfc是不會釋放Brush的,問題找到了, 解決起來貌似很容易了,其實這個解決也正是癥結所在,隨便上網找了一下,大家都是在說的解決辦法是定義成員變量, 查看msdn, 也是這么說的,但是成員變量有一個問題, 就是一般要在構造函數中創建, 在析構函數中刪除, 這樣的用法針對一次設置顏色, 沒有問題。但是我的需求是在對話框運行過程中動態修改控件的背景色,順著這樣的思路自然想到在OnCtlColor, 先刪除,然后再重新創建, 如下面這樣
if (m_pBrushBoard != NULL)
        {
            m_pBrushBoard->DeleteObject();
            m_pBrushBoard = NULL;
        }
        
        if (m_pBrushBoard == NULL)
        {
            m_pBrushBoard->CreateSolidBrush(m_colorBoard);
        }

但是覺得這樣,盡管這是大多數人的解決辦法,

到msdn社區搜索了一下,調用下面的這個函數,就可以了, 個人覺得這個方法更好一些,

SetDCBrushColor(pDC->m_hDC, m_colorBoard);
        HBRUSH b= (HBRUSH)::GetStockObject(DC_BRUSH);
        return b;









歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 涩涩999 | 国产一区二区三区在线看 | 亚洲成肉网| 国产理论在线 | 能看的av网站 | 欧美福利视频 | 国产精品免费av | 日本视频在线免费观看 | 在线观看视频一区 | 国产成人精品av在线观 | 欧美一级网站 | 久热中文字幕 | 秋霞一区二区三区 | 亚洲乱码在线 | 三级视频在线观看 | 中文字幕在线网站 | 特级黄色大片 | 性生活网址 | 天天碰天天操 | 91av在线免费观看 | 日韩久久一区 | 日本成人免费网站 | 黄色片亚洲 | 欧美国产日韩精品 | 毛片一级片| 婷婷97| 在线网站免费观看18 | 又黄又爽又色视频 | 日韩精品免费一区二区夜夜嗨 | 久久中文视频 | 久久香蕉网| 黄色网页免费 | 国产伦精品一区二区三区四区 | 日韩欧美三级 | www.99riav| 97视频在线| 成人国产精品久久久网站 | 欧美中文字幕在线观看 | 特级黄色大片 | 成人免费看片' | 国产成人精品一区二区三区在线 |