在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg

HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT

nCtlColor); 参数nCtlColor用于指定控件的类型,可以是:

.CTLCOLOR_BTN 按钮控件 //(注意check

box 属于button控件)

.CTLCOLOR_DLG 对话框

.CTLCOLOR_EDIT 编辑框

.CTLCOLOR_LISTBOX 列表控件

.CTLCOLOR_MSGBOX 消息控件

.CTLCOLOR_SCROLLBAR 滚动条控件

.CTLCOLOR_STATIC 静态控件

[程序实现]

假设你已有了名为My的对话框工程.你有了一个STATIC的控件,ID为IDC_STATIC1.HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd,

UINT nCtlColor)

{

HBRUSH

hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

if

(nCtlColor==CTLCOLOR_STATIC)

{

pDC->SetTextColor(RGB(255,0,0));//字体颜色

pDC->SetBkColor(RGB(0, 0,

255)); //字体背景色

}

//

TODO: Return a different brush if the default is not desired

return

hbr;

}

如果要指定某个特定控件可以这样写:ID为IDC_STATIC1

if (pWnd->GetDlgCtrlID()==IDC_STATIC1)

{

pDC->SetTextColor(RGB(255,0,0)); //设置字体颜色

pDC->SetBkMode(TRANSPARENT);

//设置字体背景为透明// TODO:

Return a different brush if the default is not

desiredreturn

(HBRUSH)::GetStockObject(BLACK_BRUSH);// 设置背景色

}

else

return hbr;

【注】

BLACK_BRUSH:黑色

WHITE_BRUSH:白色

GRAY_BRUSH:灰色

NULL_BRUSH:透明

HOLLOW_BRUSH

:透明

1.为对话框类添加WM_CTLCOLOR的响应函数afx_msg HBRUSH

OnCtlColor(CDC*pDC,CWnd*pWnd,UINT nCtlColor){...}

2.定义一个m_brush(CBrush类型)的成员变量和一个m_font(CFont类型)成员变量,在构造函数中初始化,例如:m_brush.CreateSolidBrush(RGB(0,0,255));m_font.CreatePointFont(200,"华文行楷");

3.改变背景颜色和文本颜色和字体:在OnCtlColor()添加代码:

if(pWnd->GetDlgCtrlID()==IDC_LINE_STYLE)

{

pDC->SetTextColor(RGB(255,0,0));

pDC->SetBkMode(TRANSPARENT);//设置文本背景色为透明

pDC->SelectObject(&m_font);//设置字体

return m_brush;//设置控件背景颜色

}

//对于按钮来说上面的方法无效

3. 设置控件ID为IDC_SYSFONTSAMPLE的背景颜色与其背景图片一致方法如下:

if(pWnd->GetDlgCtrlID()==IDC_SYSFONTSAMPLE)

{

// 设置控件背景色与背景图片颜色一致

COLORREF

bkColor = RGB(239,239,239); //背景图片的颜色值

pDC->SetBkColor(bkColor);

return

(HBRUSH)::GetStockObject(NULL_BRUSH);

}

c语言vc怎么改变背景板颜色,VC OnCtlColor函数来修改控件背景颜色相关推荐

  1. MFC Tab背景颜色及窗体内控件背景颜色更改

    整体效果图如下: 1.Tab标签页改变背景颜色 主要参照的是以下链接中的案例进行的修改,有需要的可以参考:http://download.csdn.net/detail/u014272404/9797 ...

  2. 【转】修改static控件背景颜色和文字颜色

    当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息.如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄, ...

  3. C# dev控件色卡说明颜色卡片实现,运用TextEdit控件实现颜色卡片效果

    运用TextEdit控件实现颜色卡片效果: 1.右键设置TextEdit属性Image and Text 2.属性CanOpenEdit 设置true 属性Caption 为文字说明 属性Captio ...

  4. 设置QWidget及其子类控件背景颜色

    QWidget是所有用户界面控件的基类,所以用同样的方法为其子类控件改变背景颜色. Qt中窗口背景的设置,下面介绍三种方法. 使用QPalette 使用Style Sheet 绘图事件使用Style ...

  5. Android设置控件背景颜色

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. 设置控件背景背景颜色为透明

    有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件.那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答 ...

  7. MFC颜色调配 | vc++6.0颜色设置,如何修改控件颜色

    效果展示 1.新建一个MyEdit类,该类继承自CEdit类,并添加相关变量和函数: 在MyEdit类的头文件(.h)中定义如下变量和函数: private:COLORREF m_Background ...

  8. VC++如何在程序中用代码注册和卸载ocx控件(代码)

    方法一:在dos或Windows命令行下运行:regsvr32 ocxname.ocx 注册 示例: regsvr32 netshare.ocx     //注册netshare.ocx控件 regs ...

  9. 如何修改PyCharm窗口背景颜色?

    如何修改PyCharm窗口背景颜色? 前言 PyCharm是一种Python IDE,它可以提高用户在使用Python语言时的开发效率,它的默认窗口颜色是白色,但有时候我们希望窗口颜色较深一些,这样有 ...

  10. MiniGUI字体放大、控件字体颜色的问题(转)

    http://blog.163.com/y845766643@126/blog/static/171046302201081475351690/ 2010-09-14 19:53:51|  分类: M ...

最新文章

  1. 计算机与应用教学,教学方法与教学手段
  2. SpringBoot连接多RabbitMQ源
  3. java gridout_java 布局管理器GridLayout
  4. Ubuntu18.04 命令行安装PyCharm
  5. apache配置好后编译rewrite
  6. vue报错 Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法
  7. script标签中type为script type=text/x-template是个啥
  8. Android Audio打开输出设备流程(十五)
  9. pythonscipy教程_Python学习教程(Python学习路线):Python—SciPy精讲
  10. MOS管、IGBT、BJT的区别
  11. 八种常规常用的SQL查询语句
  12. 路由器wifi信号测试软件,常用路由器WIFI测速效果比对
  13. JVS公众号登陆配置
  14. Ps学习(色彩范围工具使用和多边形抠图案例)
  15. matlab保存m文件是什么意思,在Matlab中怎样把一个程序保存为一个.m文件
  16. 猴子摘香蕉问题python_用Basic STRIPS算法求解猴子和香蕉
  17. 二、C++反作弊对抗实战 (进阶篇 —— 4.遍历进程模块(暴力扫描整个内存找出被断链的))
  18. 设计模式之装饰器模式(C++)
  19. 面经:2020校招中兴提前批面试经历
  20. 【TypeScript 专题】之 Ts 中的类(class)

热门文章

  1. 期权定价模型BS模型及反推隐含波动率 golang实现
  2. Openpose官方编译及其训练模型
  3. 2016 CSDN最佳博客(Android)
  4. Excel 行列转换的最简方法
  5. 网站服务器的宽带是1mb是什么意思,1mb/s网速是什么意思
  6. Docker 安装 Elasticsearch 7.12.1
  7. Mysql 启动命令详解
  8. 企业版360忘记密码卸载
  9. 苹果摄像头黑屏_报道称苹果已将折叠 iPhone 送往测试/苹果官网上线送份好礼,送到心里页面/iPhone 12 mini 拆解报告公布...
  10. 36种漂亮的CSS3网页按钮Button样式