使用OnCtlColor函数消息打造背景

OnCtlColor--设置对话框或控件背景 通过消息WM_CTLCOLOR我们可以改变对话框或一些特殊控件的背景颜色1、添加WM_CTLCOLOR消息映射。2、在CWnd::OnCtlColor里面作相应的处理HRESULT CWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor){    switch (nCtlColor)    {        case CTLCOLOR_BTN:  阅读详情

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

参数nCtlColor用于指定控件的类型,可以是:
                    .CTLCOLOR_BTN                               按钮
                    .CTLCOLOR_DLG                               对话框
                    .CTLCOLOR_EDIT                              编辑框
                    .CTLCOLOR_LISTBOX                        列表控件
                    .CTLCOLOR_MSGBOX                        消息控件
                    .CTLCOLOR_SCROLLBAR                   滚动条
                    .CTLCOLOR_STATIC                          静态控件

 

为窗体添加该响应消息,重载OnCtlColor函数,下面举几个例子说明:
[例1]
为My的对话框工程,有一个STATIC的控件,ID为IDC_STATIC1.
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    if (nCtlColor == CTLCOLOR_STATIC)
    {
          pDC-> SetTextColor(RGB(255,0,0));      //字体颜色
          pDC-> SetBkColor(RGB(0, 0, 255));       //字体背景色  
     }
    return hbr;
}

如果要指定某个特定控件可以这样写:ID为 IDC_STATIC1
if (pWnd-> GetDlgCtrlID()==IDC_STATIC1)
{
    pDC-> SetTextColor(RGB(255,0,0));        //设置字体颜色
    pDC-> SetBkMode(TRANSPARENT);         //设置字体背景为透明
    return (HBRUSH)::GetStockObject(BLACK_BRUSH);     // 设置背景色
}
else

    return hbr;

【注】
BLACK_BRUSH:黑色
WHITE_BRUSH:白色
GRAY_BRUSH:灰色
NULL_BRUSH:透明
HOLLOW_BRUSH :透明


[举例2]  为对话框设置背景颜色
1. CBrush m_Brush;
2. m_Brush.CreateSolidBrush(RGB(255,0,0));
3. HBRUSH CTest123Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    if (nCtlColor == CTLCOLOR_DLG )
        return (HBRUSH)m_Brush.GetSafeHandle();
    return CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
}


[举例3]为对话框设置背景图片
1. CBrush m_Brush;
2. CBitmap* pBitmap = new CBitmap;
    ASSERT(pBitmap);
    pBitmap->LoadBitmap(IDB_BACKGROUD);
    m_Brush.CreatePatternBrush(pBitmap);
3. HBRUSH CTest123Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
 {
     if (nCtlColor == CTLCOLOR_DLG )
           return (HBRUSH)m_Brush.GetSafeHandle();
    return CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
 }

[举例4]
HBRUSH CColorEditBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)        //第一个编辑框
{
     pDC->SetBkColor(m_redcolor);       // 输入文本的的底色
     pDC->SetTextColor(m_textcolor);   // 输入文本的颜色
     hbr = (HBRUSH) m_redbrush;         // 编辑框控件的填充色
}
if (pWnd->GetDlgCtrlID() == IDC_EDIT2)//第二个编辑框
{
     pDC->SetBkColor(m_bluecolor);      // 输入文本的的底色
     pDC->SetTextColor(m_textcolor);   // 输入文本的颜色

     hbr = (HBRUSH) m_bluebrush;        // 编辑框控件的填充色

}
return hbr;

}

WM_CTLCOLOR和OnCtlColor消息的用法 WM_CTLCOLOR和OnCtlColor消息的用法(2009-01-16 13:56:36)标签:杂谈   很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调,因此很多人往往找到很多其它的控件对对话框进行美化修饰,例如给静态控件设置字体,设置背景颜色等等,其实这些完全可以由VC自己的WM_CTLCOLOR消息来完 阅读详情

相关推荐

AutoCAD二次开发:基于CAdUiPaletteSet的现代屏幕菜单实现

在软件界面设计中,菜单系统是用户与功能交互的核心枢纽。传统下拉菜单和工具栏在功能复杂时容易占用过多屏幕空间,影响操作效率。为解决这一问题,现代UI设计引入了可停靠、可自动隐藏的选项板(Palette)技术,它通过将功能模块化、标签化,实现了界面空间的动态管理,提升了专业软件的用户体验。在AutoCAD二次开发领域,这一技术通过ObjectARX中的CAdUiPaletteSet类实现,它允许开发者创建与AutoCAD深度集成的自定义工具面板。其技术价值在于提供了原生的停靠管理、状态持久化和MFC资源集成能力

掬水月在手,弄花香满衣 370

MFC 给对话框和静态文本(STATIC)设置背景颜色,利用OnCtlColor

【代码】MFC 给对话框和静态文本(STATIC)设置背景颜色,利用OnCtlColor。

qq_53892359的博客 753

自绘CButton及使用OnCtlColor定制窗口背景

通过重载DrawItem实现自绘CButton的功能,其中子控件要设Owner Draw属性为TRUE,动态创建CButton控件时添加BS_OWERDRAW属性。 通过重载OnCtrlcolor函数实现定制窗口背景功能。

VC 使用OnCtlColor函数来改变控件颜色

在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:   afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);            参数nCtlColor用于指定控件的类型,可以是:            .

ldkcumt的专栏 3090

OnCtlColor消息的用法

OnCtlColor消息的用法 OnCtlColor消息的用法 OnCtlColor消息的用法 OnCtlColor消息的用法 OnCtlColor消息的用法

STM32H743必要外围电路分析

写在前面:这篇博客是我第一次绘制STM32最小系统板的过程记录。 2020-1-11 BOOT STM32采用ARM内核,和ARM处理器一样,都有专门的boot脚决定单片机从何处启动。 在官方数据手册的第105页,我们可以看到 系统复位后,在SYSTICK的第四个上升沿锁存BOOT引脚的值,复位后,BOOT引脚可以由用户自由配置而不会影响系统正常运行。 BOOT引脚决定了自举存储器地址,当BO...

Cui_Hongwei的博客 1万+

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

在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msgHBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINTnCtlColor);参数nCtlColor用于指定控件的类型,可以是:.CTLCOLOR_BTN按钮控件//(注意checkbox...

weixin_39753791的博客 785

STM32接入CH340芯片的升级电路及初始化进入升级模式(死机)问题处理

MCU-REST 在 MCU-BOOT0 处于低电平状态下,进行下拉操作,在MCU-REST 与 MCU-BOOT0 恢复正常电平时,将导致MCU死机,MCU-REST 先于 MCU-BOOT0 下拉可解决该问题;MCU-REST 在 上升沿结束时将判断 MCU-BOOT0 的状态,MCU-BOOT0 处于高电平,MCU死机,MCU-BOOT0 处于低电平 MCU 正常;

LuDvei的博客 2494

重载OnCtlColor函数与发送WM_CTLCOLOR消息问题

更改颜色时重载OnCtlColor函数后自然想到发送一个

副组长的博客 1467

2024年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

他尝试编写了如下程序,请你完善划线处的代码,计算出在h点s分放学时,三个时针分别经过3点位置的次数,用一个元组表示各指针经过3点位置的次数 (时针次数,分针次数,秒针次数) ,并输出。所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。匿名函数,冒号之前表示的是这个函数的参数,冒号之后表示返回值,可以使用默认值,使用时需要将它赋值给一个变量,设置默认值不是必须,如无传入实参则使用默认值,如有传入实参则使用实参。

人生就是一个不断学习的过程 372

PD详解 扩展消息——Source_Capabilities_Extended Message

PD的协议层分为控制消息,数据消息还有扩展消息,今天大师匈讲一下扩展消息中的source_cap_extended。这个消息在扩展消息中算是比较关键的东西。 扩展消息中的source_cap_extended 大师匈先上图,然后逐一解释; 上面的图表说了source_cap_ext中包含了哪些内容。 我们注意到在source_cap扩展消息中是以字节为单位的,并不是像source_cap中以一个object为单位,当然有注意到PD标准spec中说明的扩展消息的话,那里有说明,在header之后的字节

大师匈的博客 3521

OnCtlColor函数的用法

从函数名易看出,OnCtlColor函数的作用是改变(或响应)控件的颜色~~ 多用在对话框应用程序(或基于CFormView的应用程序)中,希望在对话框显示时,里面的控件的颜色可以设置为我们想要的颜色~~ 在OnInitDialog() 函数中,我们一般设置好控件的字体~~ 在OnPaint()函数中,用来画图,或者是加载一幅位图~~ 我们往控件里拖入了很多控件,那么控件的颜色可以在哪里更

foreverhuylee的专栏 1万+

【RT-DETR有效改进】利用ASF-YOLO改进特征融合层(附代码 + 详细教程)

本文给大家带来的改进机制是ASF-YOLO(发布于2023.12月份的最新机制),其是特别设计用于细胞实例分割。这个模型通过结合空间和尺度特征,提高了在处理细胞图像时的准确性和速度。在实验中,ASF-YOLO在2018年数据科学竞赛数据集上取得了卓越的分割准确性和速度,达到了0.91的box mAP(平均精度),0.887的mask mAP,以及47.3FPS的推理速度,效果非常的好,这个结构本来是用于分割的,我将其移植到了目标检测的模型上,所以其可以适用于分割和目标检测。

Snu77的博客 2296

如何改变控件内的字体颜色(转)

在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:  afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);           参数nCtlColor用于指定控件的类型,可以是:           .CTLCOL

Laiger001的专栏 1113

一文吃透 ABAP RESTful Application Programming Model(RAP):从数据建模与行为,到业务服务暴露,再到服务消费

本文介绍了SAP ABAP统一编程模型RAP的核心架构与实践方法,通过构建完整的ZTRAVEL和ZBOOKING业务对象,演示了从数据建模、行为定义到服务暴露的全流程。文章详细说明了RAP三层架构(数据与行为层、服务提供层、服务消费层)的实现方式,包括CDS视图实体定义、行为定义(BDEF)中的事务能力声明、投影与服务绑定等关键步骤。特别强调了ABAP Cloud环境下的开发限制和最佳实践,如使用GUID和late numbering机制,以及如何通过EML语言操作业务对象。最后提供了完整的代码示例,展示了

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 524

适航文章汇总:知识体系全面梳理

无论您是行业新手还是经验丰富的专业人士,都可以通过本篇文章快速查找相关资料,提高对适航认证、机载系统、软件及硬件等领域的理解。本部分详细解析ARP 4754A、ARP 4761、DO-178C、DO-254等核心标准,并介绍其在机载系统开发中的应用。介绍FAA、EASA、CCAR等主要航空管理机构的适航规章体系,并说明各类飞行器(如固定翼、旋翼机、无人机等)的适航要求。本部分还探讨硬件设计、验证与确认过程中的挑战。从系统架构设计到机载设备的集成与管理,本部分介绍机载系统的研发体系及适航管理的最佳实践。

qq_41854911的博客 1454

WM_CTLCOLOR消息、OnCtlColor的用法

很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调,因此很多人往往找到很多其它的控件对对话框进行美化修饰,例如给静态控件设置字体,设置背景颜色等等,其实这些完全可以由VC自己的WM_CTLCOLOR消息来完成! WM_CTLCOLOR消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色,其用法如下: 1.首先在自己需要设置界面的对话框上点击右键-->

TheEntirely的专栏 992

微信小程序流量主提升ecpm的一些方法

ecpm就是千次广告曝光收入,是一个预估的价格,而不是额定的,他是随着曝光度,用户点击度,页面访问数来决定的。

任聪聪的博客 1万+
上一篇: 有类查找和无类查找
下一篇: 游戏外挂技术( 0 )
proing
博客等级 码龄19年 2092粉丝 94原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值