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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2269|回復: 0
打印 上一主題 下一主題
收起左側

對話框OnCtlColor的資源泄露問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:102668 發表于 2016-1-16 03:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
上回說到使用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;




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品亚洲成在人线av网址 | 色接久久 | 免费在线看黄 | 亚洲中国字幕 | 91在线精品视频 | 国产成人午夜电影网 | 人人干97 | 日日骚视频| 婷婷色在线| 欧美老少妇一级特黄一片 | 欧美中文字幕在线观看 | 激情一区二区三区 | 在线看无码的免费网站 | 午夜电影日韩 | 99精品99| 欧美人妇做爰xxxⅹ性高电影 | 日韩欧美二区 | 久久久久久久久久久91 | 日本精品视频 | 欧洲精品一区 | 久久五月婷 | 日韩精品一区二区三区第95 | 午夜影院网站 | 免费观看的黄色网址 | 99pao成人国产永久免费视频 | av毛片在线免费观看 | 亚洲精品一区二区在线观看 | 日韩一区二区在线播放 | 国产亚洲一区二区三区在线观看 | 亚洲男人天堂网 | 成人免费在线观看视频 | 日韩欧美精品在线 | 久久久久久久久久一区 | 精品视频一区二区三区在线观看 | 一本一道久久a久久精品蜜桃 | 一区二区在线免费观看 | 久久久精品网 | 欧美日韩亚洲国产 | 日韩精品在线播放 | 欧美久久久网站 | 欧美激情一区二区三区 |