[转]对话框与其控件的颜色,字体的设置

自绘编辑框CEdit(继承CEdit方式) 对于自定义控件, 我们可以这样理解: 我们要处理控件的行为和显示. 我这里的需求只需要自定义编辑框的显示即可, 行为则使用默认即可. 通过重载CEdit就可以实现. 1. 主要实现内容 显示主要有: 边框, 背景, 文字颜色, 禁用态的各种颜色. 2. 边框 边框可以通过重载OnNCPaint实现.  例如: void CMyEdit::OnNcpaint() { C 阅读详情
        要改变对话框的一般颜色,可以在C***App的InitInstance函数里加入如下代码:SetDialogBkColor(RGB(0,255,255),RGB(255,0,0));//背景青蓝、文字红色

但是这样不能改变对话框中的图形控件的颜色;

每个控件在dialog中都是一个窗口,当要绘制控件时,会发出一个WM_CTLCOLOR消息给它的父窗口(对话框本身).消息映射及响应函数如下:

ON_WM_CRLCOLOR() //反映WM_CTLCOLOR消息

afx_msg HBRUSH CWnd::OnCrlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor);

//

nCtlColor类型:

CTLCOLOR_DLG对话框本身,不含有所有的控件

CTLCOLOR_STATIC 所有包含static text控件的设置(也包括无效的edit box、combo box的eidt box)

CTLCOLOR_EDIT     edit box与combo box的eidt box部分

CTLCOLOR_LIST     list box与combo box的edit box部分

CTLCOLOR_SCROLLBAR Scroll bar的空白区

我们也可以单独改变某一个控件的颜色.OnCtrlColor函数的pWnd成员变量是各控件的窗口指针,以pWnd->GetDlgCtrlID()可以获得调用此函数的控件ID,将它与已知ID比较,就可以改变这个控件的颜色。

if(pWnd->GetDlgCtrlID() ==IDC_CONTROL)//为控件的ID

{

//pDC->SetBkColor(RGB(255, 0, 0)); -----------在这里也用上了这种写法。不行的,

}

另外一个作法是比较pWnd;例如:如果一个edit box控件的成员变量m_edit1被声明为CEdit类,那么把m_edit1.m_hWnd与pWnd->m_hWnd比较,也可以知道是哪个控件.

下面是一个例子:

HBRUSH CDIALOGDlg::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_EDIT)

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

    if(nCtlColor== CTLCOLOR_LISTBOX)

    {

        HBRUSH m_hbrush;

        m_hbrush=CreateSolidBrush(RGB(0,0,0));

        pDC->SetBkMode(TRANSPARENT);

                //设置字体颜色

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

        return m_hbrush;

    }

    CBrush m_cBrush;

    m_cBrush.CreateSolidBrush(RGB(0,255,255));

    switch(nCtlColor)

    {

    case CTLCOLOR_DLG:

        pDC->SetBkMode(TRANSPARENT);

        break;

   case CTLCOLOR_STATIC:

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

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

        break;

    }

    DeleteObject(m_cBrush);

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

    return hbr;

字体设置:

   VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。

    例子:

    1、改静态文体的ID,如:IDC_STATIC1

    2、添加一个Edit控件,建立一个关联的控件m_editControl。

    3、在OnInitDialog中添加如下代码:

     CFont * f;

     f = new CFont;

     f->CreateFont(16, // nHeight

     0, // nWidth

     0, // nEscapement

     0, // nOrientation

     FW_BOLD, // nWeight

     TRUE, // bItalic

     FALSE, // bUnderline

     0, // cStrikeOut

     ANSI_CHARSET, // nCharSet

     OUT_DEFAULT_PRECIS, // nOutPrecision

     CLIP_DEFAULT_PRECIS, // nClipPrecision

     DEFAULT_QUALITY, // nQuality

     DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

     _T("Arial")); // lpszFac

     m_editControl.SetFont(f);

     m_editControl.SetWindowText("问专家");

     GetDlgItem(IDC_STATIC1)->SetFont(f);

    

       需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量。非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。
 
 
MFC窗口各控件的颜色和字体的设置 很多人定义了基于MFC的程序项目,当设计界面使用控件时,却不知道如何对各控件进行字体与颜色的设计;其实这些修改是需要动手添加代码的,这方面的修改在控件属性里是没有现成的,这不同于.net定义的项目,它的是有直接属性修改的。我在原文的基础上做了修改与完善,也可参见原文 原文:http://www.study-code.com/visual-studio/vc/74759.htm 1、改变对话框的 阅读详情

相关推荐

MFC窗口的颜色和字体的设置

ou 1、改变对话框的底色在对话框的类中添加一个 private : CBrush m_brush;的成员变量。在类的构造函数中添加如下代码:m_brush.CreateSolidBrush(RGB(0,0,255));    //初始化为蓝色为对话框添加一个WM_CTLCOLOR消息响应函数,专门为控件着色的消息响应函数,代码如下:HBRUSH CSettingDlg::OnCtlColor(C

李孟的专栏 5261

对话框与其控件的颜色,字体的设置

        要改变对话框的一般颜色,可以在C***App的InitInstance函数里加入如下代码:SetDialogBkColor(RGB(0,255,255),RGB(255,0,0));//背景青蓝、文字红色  

menker的专栏 778

Qt基本对话框之文件对话框,颜色对话框,字体对话框

本文介绍Qt的标准对话框文件对话框,颜色对话框,字体对话框,分别定义了三个按钮点击可以弹出标准的对话框,再用网格布局对这些控件进行布局。 头文件: #ifndef STANDARDDIALOG_H #define STANDARDDIALOG_H #include #include #include #include #include cla

u013569763的博客 4508

MFC OnCtlColor()不执行

MFC项目,为某个窗体增加了OnCtlColor方法,但是实测没执行,方法的代码是从另一个窗体复制过来的。 找到了问题的原因,参考:https://blog.youkuaiyun.com/smart1bird/article/details/78742047 解决方法:不要手动从其他窗体复制OnCtlColor方法,而应该在设计器中正式添加: 1.右击窗体-事件 2.选择WM_CTLCOLOR,确定。...

小鹰信息技术服务部 2138

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(CO

qq_25036849的博客 3989

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

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

更改exe程序图标_更改电脑文件夹颜色、样式、图标,让文件夹不再是单一的黄色...

电脑文件夹一般默认的是样式、图标、颜色,如下图所示:文件夹那么,怎样改变这三种设定呢?其实操作很简单,下面小编介绍一个小工具,具体的操作步骤如下:1、首先,下载安装,下载下来的安装包是一个压缩包,只有不到4M的大小,解压之后如下图(文末有下载方式)解压缩2、双击“FolderPainter.exe”,进入安装界面,勾选“文件夹颜色”、“文件夹样式”、“文件夹图标”这三个选项,点击“安装”即可,由于...

weixin_39702559的博客 528

华为云CodeHub代码托管

什么是代码托管 代码托管(CodeHub)是面向软件开发者的基于Git的在线代码托管服务,是具备安全管控、成员/权限管理、分支保护/合并、在线编辑、统计服务等功能的云端代码仓库,旨在解决软件开发者在跨地域协同、多分支并发、代码版本管理、安全性等方面的问题。 代码托管具有以下特性 · 在线代码阅读、修改、提交,随时随地开发,不受地域限制。 · 在线分支管理,包含分支新建、切换、合并,实现多分支并行开发,效率高。 master分支:最为稳定,功能比较完整,随时可发布的代码。 develop分支:用于平时开

LUJINYUANA的博客 1万+

VC杂项编程

VC杂项编程一、改变视图背景色:<br />    在CView的OnDraw函数中添写如下一段程序代码: <br />    void CFileNameView::OnDraw(CDC* pDC) <br />    { <br /> CFileNameDoc* pDoc = GetDocument(); <br /> ASSERT_VALID(pDoc); <br /> CRect rectClient; <br /> CBrush brushBkColor; <br /> GetClientRect

小辣椒 777

【知识点总结】电路原理 第一讲

大家好,从今天起,我将开始更新自上大学以来所学到的各种知识,之所以选择更新它们是因为最近我一直在收拾整理自己自上大学以来所收获到的各种知识,看着那厚厚一沓的书本心里不由得犯愁。如果我想找到特定的知识,那岂不是得翻到猴年马月。俗话说得好,下雨天打鞋子,闲着也是闲着,为此我设置一个专栏,将知识点一一分类总结,目的在于更好的整理所学的知识。本人学艺不精,有一些知识点地方可能存在瑕疵,希望各位大佬可以多多指教。以下是本篇文章正文内容虚断:一般通用性运算放大器的正反向输入端之间的电阻非常非常的大。

weixin_51130221的博客 4万+

【AIGC】人工智能训练师(高级)考试题库-橙点同学

例如,在嘈杂的环境中进行声音转文字,即使是优秀的模型也可能会出现一些错误,但这并不意味着该模型本身质量差,在其他较为理想的环境下,它可能会有很好的表现。例如,在一些语音应用和系统中,会使用SSML来实现对语音合成的精细控制,如调整语速、语调、音量等,而这些应用和系统的开发往往会遵循W3C的相关标准和框架,其中就包括SSML这一语音合成标记语言。例如,在语音识别等场景中,像“去火车站怎么走”这样的语音指令,没有其他嘈杂的背景声音或模糊不清的表述,就属于无噪音的数据,有利于系统准确地进行处理和分析。

RisunJan的博客 9920

MFC:快速设置控件文本字体、大小、颜色、背景

以静态文本为例,分享一下怎么修改文本字体、大小、颜色、背景等参数。其他文本、控件等可参照修改。 1.修改字体、大小 这个很简单,首先在Dlg类中声明一个CFont类型的成员变量:   然后在类的初始化函数OnInitDialog()中添加以下两行代码: //设置静态文本字体大小 m_editFont.CreatePointFont(180, _T("宋体"));...

匆匆那年 2万+

Gemini 2.5 Pro国内免魔法直连教程:5分钟搞定专业级PPT图表(附折线图/柱状图案例)

本文详细介绍了如何利用Gemini 2.5 Pro快速生成专业级PPT图表,包括折线图和柱状图等常见商业图表。通过自然语言交互和智能图表生成功能,用户可以在5分钟内完成数据可视化,大幅提升工作效率。文章还提供了实战案例和高级技巧,帮助用户轻松应对各种商业场景需求。

weixin_30733003的博客 460

基础语法篇_10——设置对话框、颜色对话框、字体对话框、示例对话框、改变对话框和控件的背景及文本颜色、位图显示

文章目录一、简单绘图二、设置对话框2.1 设置线宽2.2 设置线型 新建一个单文档类型的MFC工程,取名:Graphic。此程序将实现简单的绘图功能。 一、简单绘图 实现简单的绘图功能,包括点、直线和椭圆的绘制。为了实现这些功能: ⭕⭕1)首先为此程序添加一个子菜单,菜单名称为“绘图”; ⭕⭕2)为其添加四个子菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选...

WaitFoF 2834

水文模型新手必看:用SWAT-CUP做参数率定,如何正确设置预热期、率定期和验证期?(附数据准备避坑指南)

本文详细介绍了使用SWAT-CUP进行水文模型参数率定的完整流程,重点解析了预热期、率定期和验证期的正确设置方法,并提供了数据准备的避坑指南。通过实操步骤和常见问题解决方案,帮助新手快速掌握SWAT-CUP参数率定的核心技巧,提升水文模型模拟精度。

weixin_26875109的博客 373

从婴儿学步到工业级应用:VLA的‘隐式标定‘原理通俗图解

本文深入解析VLA(Vision-Language-Action)模型的'隐式标定'原理,通过类比婴儿学习机制,揭示其如何替代传统手眼标定技术。文章对比了工业机器人传统标定与VLA数据驱动方法的差异,并可视化神经网络注意力机制,展示其在空间关系编码上的突破性进展。最后探讨了VLA在工业应用中的优势与混合架构解决方案。

pz890123456的博客 323

MFC:颜色字体对话框及控件颜色

一、颜色对话框: CColorDialog(COLORREF clrInit = 0,DWORD dwFlags = 0,CWnd* pParentWnd = NULL);  数据成员:CHOOSECOLOR m_cc; typedef struct{ DWORD lStructSize; HWND hwndOwner; COLORREF rgbResult; //当用户点击了ok按钮

yangchuankai's blog 1158

Android14 Qcom 从Framework到Driver带你打开WIFI(二)

上篇文章讲到了UI打开WIFI以后,逐步调用到加载底层驱动以及通知等相关流程。这篇接着上文继续往下看WIFI ON的后续动作。

IAYLBL的博客 764

MFC窗口各控件的颜色和字体的设置【转】

MFC窗口各控件的颜色和字体的设置(2009-09-04 11:08:39)转载标签:it分类:MFC/Windows<br />很多人定义了基于MFC的程序项目,当设计界面使用控件时,却不知道如何对各控件进行字体与颜色的设计;其实这些修改是需要动手添加代码的,这方面的修改在控件属性里是没有现成的,这不同于.net定义的项目,它的是有直接属性修改的。我在原文的基础上做了修改与完善,也可参见原文<br />原文:http://www.study-code.com/visual-studio/vc/74759.

sl159的专栏 1144

OBC_开环扫频波特图拟合操作流程(结合 Simulink)

摘要: 本文详细介绍了基于Simulink的开环扫频波特图测试与拟合流程,适用于电源/控制系统(如LLC/PFC)的小信号分析。主要内容包括:1)前期准备(测试点选择、信号范围设定);2)Simulink建模方法(信号注入、数据记录);3)两种扫频方式(逐频正弦/Chirp扫频)的实现;4)MATLAB数据处理(FFT分析、传递函数拟合);5)线性分析工具使用技巧。重点强调了激励信号幅值控制、稳态数据采集及模型验证方法,并提供完整MATLAB脚本示例。该流程可有效获取系统频域特性,为控制器设计提供可靠依据。

Sumerking的博客 232

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

控件字体及颜色设置

<br />很多人定义了基于MFC的程序项目,当设计界面使用控件时,却不知道如何对各控件进行字体与颜色的设计;其实这些修改是需要动手添加代码的,这方面的修改在控件属性里是没有现成的,这不同于.net定义的项目,它的是有直接属性修改的。我在原文的基础上做了修改与完善,也可参见原文<br />原文:http://www.study-code.com/visual-studio/vc/74759.htm<br /><br />1、改变对话框的底色<br />在对话框的类中添加一个 private : CBrush

GhostTigerMan 1335

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

动态设置Edit控件的背景及字体颜色

1.新建一个基于对话框的应用程序,在对话框上添加一个Edit控件和一个Button控件 2.修改Button控件的ID为IDC_RESULT_EDIT 3.向对话框对应的类中添加如下成员变量: public:  COLORREF m_colorEditText; // edit控件的字体颜色  COLORREF m_colorEditBK;  // edit控件的背景颜色  HBRUS

DullardFighting 7267

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Qt 设置textEdit插入文本的字体、大小和颜色

1:、打开字体对话框选择字体 //用到头文件:#include <QFontDialog> void MainWindow::on_pushButton_font_clicked() { bool ok; QFont f = QFontDialog::getFont(&ok, QFont("Consolas",9), this,"设置显示字体"); ...

健忘16的博客 1万+

VC中控件字体与文本颜色的设置

 VC中控件字体与文本颜色的设置 标签: VC中控件字体与文本颜色的设置  设置字体 函数原型:  BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE b

水上漂的专栏 5012
上一篇: vs2005对vs2003之c++编译
下一篇: [转]Visual C++6.0 API函数操作技巧集
cliviajin
博客等级 码龄22年 8粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值