MFC对话框颜色设置
来源:互联网 发布:agins算法 编辑:程序博客网 时间:2024/05/10 12:03
//对话框颜色控制代码
//对话框变量
HBRUSH m_brushBack;
HBRUSH FunctionWindowA::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){/* 问题的根本原因是需要需要设置对话框及其控件为不同的背景颜色以美化界面,从而使用了 HBRUSH m_brushBack对象,尤其是通过线程消息或定时器不断更新数据时,GDI对象会不断增长,超过系统的GDI数目限制(9999),从而使程序崩溃。 问题的本质就是不断改变内容的部件不能使用背景刷(一) 为了解决GDI对象不断增长的问题,(GDI对象不能超过9999) 控件颜色的设置注意事项:(问题的本质就是不断改变内容的部件不能使用背景刷)1 背景刷使用窗口成员变量 HBRUSH m_brushBack;2 利用控件类型进行设置时,如果该类型中包含不断刷新内容的控件则不能使用背景刷;3 使用控件ID,对内容保持不变的控件,可以进行颜色背景设置;4 可利用标签的ID默认都为IDC_STATIC的特性,对内容保持不变的标签,进行颜色背景设置。(二)参考资料1 仿照QQ的浅蓝色:COLORREF QQcolor=RGB(200,224,251) 2 控件类型 CTLCOLOR_BTN 按钮控件 CTLCOLOR_DLG 对话框 CTLCOLOR_EDIT 编辑框 CTLCOLOR_LISTBOX 列表控件 CTLCOLOR_MSGBOX 消息控件 CTLCOLOR_SCROLLBAR 滚动条控件 CTLCOLOR_STATIC 静态控件 */HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor);COLORREF QQcolor=RGB(200,224,251); // 设置功能区背景 if ( (pWnd->GetDlgCtrlID() == IDC_STATICbg) || (pWnd->GetDlgCtrlID() == IDC_STATICbg2) || (pWnd->GetDlgCtrlID() == IDC_STATICbg3) ){ //pDC-> SetTextColor(RGB(255,0,0)); //字体颜色//pDC-> SetBkColor(RGB(255,255, 255)); //字体背景色 //pDC-> SetBkMode(OPAQUE);m_brushBack= CreateSolidBrush(RGB(200,204,220)); //创建画刷 return HBRUSH(m_brushBack); } // 利用ID设置标签的颜色和背景,一般标签的ID都是IDC_STATIC; //这些标签的内容是固定不变的 if (pWnd->GetDlgCtrlID() == IDC_STATIC) { pDC-> SetTextColor(RGB(0,0,255)); //字体颜色pDC-> SetBkColor(RGB(200,204,220)); //字体背景色 pDC-> SetBkMode(TRANSPARENT);m_brushBack= CreateSolidBrush(RGB(200,204,220)); //创建画刷 return HBRUSH(m_brushBack); }//利用类型设置标签的字体颜色,不能使用背景刷//这些标签的内容是不断变化的if (nCtlColor==CTLCOLOR_STATIC){pDC-> SetTextColor(RGB(255,0,0)); //字体颜色pDC-> SetBkColor(RGB(200,204,220)); //字体背景色 pDC-> SetBkMode(TRANSPARENT);}//编辑框if (nCtlColor==CTLCOLOR_EDIT){pDC-> SetTextColor(RGB(0,0,255)); //字体颜色pDC-> SetBkColor(RGB(255,255, 255)); //字体背景色 pDC-> SetBkMode(TRANSPARENT);m_brushBack= CreateSolidBrush(RGB(200,224,251)); //创建画刷 return HBRUSH(m_brushBack);} //// 利用ID设置窗口的背景颜色 // if (nCtlColor == CTLCOLOR_DLG) { //// pDC-> SetTextColor(RGB(255,0,0)); //字体颜色////pDC-> SetBkColor(RGB(200,204,220)); //字体背景色 ////pDC-> SetBkMode(TRANSPARENT);//m_brushBack= CreateSolidBrush(RGB(200,224,251)); //创建画刷 // return HBRUSH(m_brushBack); // }//只能返回系统的背景刷hbr return (HBRUSH) hbr; }
//画刷函数
void FunctionWindowA::OnPaint(){CPaintDC dc(this); // device context for paintingCRect rect;GetClientRect(rect);dc.FillSolidRect(rect,RGB(200,224,251));dc.FillPath();// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CDialog::OnPaint();}
阅读全文
0 0
- MFC对话框颜色设置
- MFC设置对话框、字体对话框、颜色对话框
- MFC设置对话框、字体对话框、颜色对话框
- VC/MFC如何设置对话框背景颜色
- VC/MFC如何设置对话框背景颜色
- VC/MFC如何设置对话框背景颜色
- MFC对话框设置静态文本框颜色
- VC/MFC如何设置对话框背景颜色
- MFC对话框静态文本颜色设置
- VC/MFC如何设置对话框背景颜色
- VC/MFC如何设置对话框背景颜色
- VC/MFC如何设置对话框背景颜色
- VC/MFC如何设置对话框背景颜色
- 给MFC对话框设置背景颜色
- VC/MFC如何设置对话框背景颜色
- VC/MFC如何设置对话框背景颜色
- VC/MFC如何设置对话框背景颜色
- 如何设置MFC对话框背景的颜色
- Easyui tree 从数据库中动态加载数据(2)
- 小圆点
- socket通信简单实现。
- Ubuntu 15 安装Sublime Text 3
- XSS 练习题记录
- MFC对话框颜色设置
- 中断
- ArrayList的实现原理---collections子集的原理整理(一)
- Android设计模式之(12)----备忘录模式
- ffmpeg过滤器文件结构
- Java生成名片式的二维码源码分享
- 14个最常见的Kafka面试题及答案
- Quartz基础篇(二)之CronTrigger触发器
- ALS spark