MFC颜色调配 | vc++6.0颜色设置,如何修改控件颜色
效果展示
1.新建一个MyEdit类,该类继承自CEdit类,并添加相关变量和函数;
在MyEdit类的头文件(.h)中定义如下变量和函数:
private:COLORREF m_BackgroundColor;//背景颜色COLORREF m_TextColor;//文本颜色 CBrush m_brushBk;//笔刷
public:void SetBackgroundColor(COLORREF color);//设置背景颜色void SetTextColor(COLORREF color);//设置文本颜色COLORREF GetBackgroundColor() const;//获取背景颜色COLORREF GetTextColor() const;//获取文本颜色
在MyEdit类的源文件(.cpp)中给变量赋初值,并书写函数体如下:
MyEdit::MyEdit()//构造函数
{m_BackgroundColor=RGB(0,0,0);m_TextColor=RGB(250,250,250);
}
MyEdit::~MyEdit()//析构函数
{m_brushBk.DeleteObject();//释放笔刷
}
void MyEdit::SetBackgroundColor(COLORREF color)//设置背景颜色
{m_BackgroundColor=color;
}
void MyEdit::SetTextColor(COLORREF color)//设置文本颜色
{m_TextColor=color;
}
COLORREF MyEdit::GetBackgroundColor() const//获取背景颜色
{return m_BackgroundColor;
}
COLORREF MyEdit::GetTextColor() const//获取文本颜色
{return m_TextColor;
}
打开类向导,给MyEdit类添加 =WM_CTLCOLOR 消息反射
在MyEdit类的源文件中的CtlColor()中添加如下代码:
HBRUSH MyEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{// TODO: Change any attributes of the DC herem_brushBk.DeleteObject();m_brushBk.CreateSolidBrush(m_BackgroundColor);pDC->SetBkColor(m_BackgroundColor);pDC->SetTextColor(m_TextColor);// TODO: Return a non-NULL brush if the parent's handler should not be calledreturn (HBRUSH)m_brushBk.GetSafeHandle();
}
2.新建一个ColorMatch类,该类继承于CDialog类,设置对话框页面布局,添加变量和函数;
设置对话框所需要的控件,并进行布局
打开类向导为控件绑定变量
在ColorMatch类的头文件中加入如下代码:
public:CFont m_Font;//字体对象void SetColor();//设置颜色函数
打开类向导为ColorMatch类添加如下消息映射
在ColorMatch类的源文件中加入如下代码:
BOOL CColorMatch::OnInitDialog()// 初始化函数
{CDialog::OnInitDialog();// TODO: Add extra initialization herem_slider_red.SetRange(0,255,false);//设置滑动控件的范围m_slider_green.SetRange(0,255,false);//设置滑动控件的范围m_slider_blue.SetRange(0,255,false);//设置滑动控件的范围m_Font.CreateFont(50,0,0,0,0,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,LPCTSTR("Arial"));m_EE.SetFont(&m_Font);//设置显示的字体大小m_red.SetBackgroundColor(RGB(255,0,0));m_green.SetBackgroundColor(RGB(0,255,0));m_blue.SetBackgroundColor(RGB(0,0,255));return TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE
}void CColorMatch::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) /*滑动条被滑动时触发*/
{// TODO: Add your message handler code here and/or call defaultSetColor();CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}void CColorMatch::SetColor()//设置颜色函数{int red=m_slider_red.GetPos();//获取红色值int green=m_slider_green.GetPos();//获取绿色值int blue=m_slider_blue.GetPos();//获取黄色值COLORREF color=RGB(red,green,blue);//合成RGB值m_EE.SetBackgroundColor(color);//设置背景颜色m_EE.SetTextColor(16777215-color);//设置字体颜色CString colorstr,redstr,greenstr,bluestr;colorstr.Format("%d",color);//颜色字符串化SetDlgItemText(IDC_EDIT,colorstr);redstr.Format("%d",red);greenstr.Format("%d",green);bluestr.Format("%d",blue);SetDlgItemText(IDC_EDIT_RED,redstr);//修改各种颜色的数值SetDlgItemText(IDC_EDIT_GREEN,greenstr);SetDlgItemText(IDC_EDIT_BLUE,bluestr);
}
3.编译、链接生成可执行文件进行测试。
实际上呢,本片文章用到的就是一个 =WM_CTLCOLOR 消息反射,消息反射就是说子控件,向父对象去请求重绘自己的颜色,文本等,因此这里需要使用一个继承于CEdit类MyEdit类,这样我们的控件才可以在父窗口不重绘的条件下,进行重绘。
MFC颜色调配 | vc++6.0颜色设置,如何修改控件颜色相关推荐
- MFC设置对话框背景色及控件颜色
MFC设置对话框背景色及控件颜色 一.使用背景图片更改对话框背景色 在对话框源文件void CxxDlg::OnPaint()函数中 if (IsIconic()) { (这里省略) } else { ...
- VC 对话框背景颜色 控件颜色
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...
- 设置ListCtrl列表控件其中某一行的字体和背景颜色
设置ListCtrl列表控件其中某一行的字体和背景颜色,可以最终达到如下效果: 操作步骤如下所示: 1.先添加一个自定义消息 ON_NOTIFY ( NM_CUSTOMDRAW,IDC_V_H264_ ...
- APP国际化、动态设置控件颜色(APP个性化)
亲身体验:某些时候QQ音乐首页整体都成灰色,艾玛,BUG!!!,截图反馈.只有首页,其他的界面没问题,好家伙,故意的! 确实,今天咱也来搞一下,这篇文章主要记录项目 1. 国际化 2. 动态设置控件颜 ...
- VC设置静态文本控件的显示字体和显示内容
首先,在对话框上添加一个Static控件,关联一个控制变量m_static(不是Value,是Control) 然后,建立一个字体变量 private:CFont m_Font; 然后,在对话框初始化 ...
- MFC中如何将焦点设置到指定控件上
在最近的项目中,需要实现刷卡功能,其原理就是响应WM_KEYDOWN和WM_CHAR等键盘消息,需要重写BOOL PreTranslateMessage(MSG* pMsg)函数来处理键盘消息:软件启 ...
- android 设置文字大小控件
自定义设置文字大小控件 1.效果图 2.自定义文字设置控件 public class TextSizeSelector extends View {private int margingLeft;pr ...
- ASP.NET2.0的multiview和wizard控件
在asp.net 1.1中,如果要做一个具有向导式的应用程序,是比较麻烦的.所谓向导式应用,就是说比如一个注册用户的应用,是需要若干步完成的,用户填完某一步的表单后,可以点"下一步" ...
- ASP.NET 2.0 中的 DataSource 系列控件
在ASP.NET 2.0中,引入了DataSource系列控件,扔一个到页面上并且选择性的配置好SELECT/UPDATE/INSERT/DELETE对应的操作,它就能够和数据空间无缝合作自动处理查询 ...
最新文章
- 2015-12-03 AD中用户属性Lastlogon与LastlogonTimeStamp的区别
- JS判断字符串变量是否含有某个字串的方法
- Method for Discovering Network Topology中文翻译【Z-Stack Home 1.2.0开发文档】
- 获取今日、本周、本月至今日的所有日期
- NB-IoT成新宠 运营商对物联网充满野心
- 【笔记】树莓派配置麦克风录音
- php案例之后台数据显示-- PDO版(php data object)
- NZ源码交易平台虚拟交易系统(商家版) 高仿淘码网模板
- JavaScript练习(一)——跟随鼠标移动
- windows server 2008 R2 怎么集成USB3.0驱动
- Root Cause Analysis of Anomalies of Multitier Services in Public Clouds
- qt安装报错:下载“http://download.qt.io/online/xxxxx/_meta.7z“server replied: Bad Gateway出现网络错误
- macd指标如何看?怎么用MACD指标确定买入和离场点?
- 微信小程序html5音频,微信小程序 audio音频播放详解及实例
- 什么是防雷接地,防雷接地工程的作用和重要意义
- 路边停车系统的具体流程是什么
- sklearn cheat sheet
- 将Sublime Text 设置成中文版
- C. Madoka and Childish Pranks #777 div2
- shell脚本 把十进制数据转换成十六进制