OnCtlColor 使用问题
来源:互联网 发布:淘宝卖的魔兽世界宏 编辑:程序博客网 时间:2024/05/24 04:49
最近做一个项目,为了控制窗口颜色,使用了 OnCtlColor函数。
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CBCGPFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 修改了事件和模式显示的字体和背景色
if(pWnd == GetDlgItem(IDC_STA_0)
|| pWnd == GetDlgItem(IDC_STA_1))
{
HBRUSH B = CreateSolidBrush(RGB(1,1,1));
return B;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
后来用任务管理器观察,发现GDI数据会一直增加,最终出现无法获取资源的错误。主界面无法正常显示。
折腾了两天,才发现是下面这两句导致的。
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CBCGPFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 修改了事件和模式显示的字体和背景色
if(pWnd == GetDlgItem(IDC_STA_0)
|| pWnd == GetDlgItem(IDC_STA_1))
{
HBRUSH B = CreateSolidBrush(RGB(1,1,1));
return B;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
因为我是用Static控件显示时间的,每秒钟会刷新一次。
而CreateSolidBrush创建的GDI对象没有被释放,造成GDI溢出。
改为成员变量, HBRUSH m_hBrush;
在窗体初始化的时候
OnInitialDialog中添加
m_hBrush = CreateSolidBrush(RGB(1,1,1));
然后OnCtlColor直接返回之前创建好的句柄
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CBCGPFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 修改了事件和模式显示的字体和背景色
if(pWnd == GetDlgItem(IDC_STA_0)
|| pWnd == GetDlgItem(IDC_STA_1))
{ // HBRUSH B = CreateSolidBrush(RGB(1,1,1)); return m_hBrush;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
这样每次不会创建新的对象
记的在适当的位置调用 DeleteObject(m_hBrush);
- OnCtlColor 使用问题
- OnCtlColor
- OnCtlColor
- OnCtlColor
- OnCtlColor
- OnCtlColor
- OnCtlColor
- OnCtlColor
- 使用OnCtlColor函数消息打造背景
- 使用OnCtlColor函数消息打造背景
- 使用OnCtlColor函数来改变控件颜色
- 使用OnCtlColor函数消息打造背景
- 重载OnCtlColor函数与发送WM_CTLCOLOR消息问题
- VC 使用OnCtlColor函数来改变控件颜色
- VC 使用OnCtlColor函数来改变控件颜色(引用)
- VC 使用OnCtlColor函数来改变控件颜色 .
- VC 使用OnCtlColor函数来改变控件颜色
- VC 使用OnCtlColor函数来改变控件颜色
- 学习html的好网站
- ASP.NET 3.5 MVC 概述
- 豆瓣网推广技术
- 可更新物化视图复制站点
- 应用HTML5须知五则
- OnCtlColor 使用问题
- 从今起多写博客
- Java中JSON解析器的一点见解
- matlab 调出颜色版自选颜色
- @property (attributes) 迷惑的attributes
- C# Asp.Net MVC 3 项目实现控制器(controller)与页面(view)分项目管理
- Android成长之路-Button、ImageButton、ToggleButton按钮的功能和用法
- 通用希腊字母读法
- wpf 属性变更通知类的实现