MFC设置静态文本框,编辑框等控件背景和字体颜色

在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 静态控件
[程序实现]
假设你已有了名为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 desired
return (HBRUSH)::GetStockObject(BLACK_BRUSH);   // 设置背景色
}
else
return hbr;

【注】

BLACK_BRUSH:黑色

WHITE_BRUSH:白色

GRAY_BRUSH:灰色

NULL_BRUSH:透明

HOLLOW_BRUSH :透明

时间: 2024-08-24 02:56:34

MFC设置静态文本框,编辑框等控件背景和字体颜色的相关文章

【MFC设置静态文本框背景为透明】

视图类中加入OnCtlColor()函数: IDC_STATIC1为静态文本框ID HBRUSH CAngleView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); if((pWnd->GetDlgCtrlID() == IDC_STATIC1)) { pDC->SetTextColor(RGB(255,255,255))

【转】VS2010/MFC编程入门之二十(常用控件:静态文本框)

本文转自鸡啄米:http://www.jizhuomi.com/software/177.html 感 谢鸡啄米对本文的贡献. 上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始鸡啄米将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控件.列表控件.树形控件和进度条控件等等.本节教程先来讲解静态文本框的使用. 控件的通知消息 在将静态文本框的使用之前,先大概讲讲控件的通知消息. 当控件有事件发

MFC更新静态文本框中数据,防止覆盖

1 在更新静态文本框之前首先隐藏控件 2 然后在显示出来. 3 代码: 4 GetDlgItem(IDC_TEXT_PM)->ShowWindow(SW_HIDE); 5 UpDate();//更新数据函数,自定义的 6 GetDlgItem(IDC_TEXT_PM)->ShowWindow(SW_SHOW);

angular延时函数和数据加载完才显示主要的页面、上传文件到后端、富文本框编辑框(ckeditor)

延时函数 setTimeout(()=>{ console.log("延时打印") },10000); // 延时10秒打印 //简单等数据加载完才显示主要的页面 1.先下载ngx-loading模块 npm install --save ngx-loading 2.在app.module.ts中引入NgxLoadingModule模块 import {NgxLoadingModule} from 'ngx-loading'; imports: [ BrowserModule,

模态框与 天地图地图控件冲突

界面采用bootstrap, 弹出模态框时,天地图的地图控件却悬浮在模态框之上,并可以继续响应操作,如图所示: 没有找出较好的解决方法,最后通过在显示模态框时将地图控件隐藏,不显示模态框时再显示地图控件的方法实现. 示例代码如下: $("#modalId").on("show.bs.modal", function () { control1.hidden(); control2.hidden(); filterControl.hidden(); }); $(&qu

VS2010/MFC对话框:创建对话框类和添加控件变量

创建对话框类和添加控件变量 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的.大家用过VC++ 6.0的可能记得,我们定义的对话框类都是从CDialog类派生的,但在VS2010中,一般对话框类都是继承自CDia

市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交

http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要给 查询出的单位录入定量成绩和定性成绩,开始使用弹出框的形式逐条进行编辑,后来考虑如果每一条都需要弹出一次弹出框,每一条都需要一次保存的话,用户可能 会不方便,后来发现了easyui中有这么一个好东西,用在这里非常合适——Cell Editing in DataGrid 查询出的结果图 为了控制提交

DbCAD dev CAD/DWG/DXF编辑与展示控件

DbCAD dev是非常优秀的CAD控件产品,它集成了CAD, AM/FM, GPS and RDBMS等技术,让相关的应用程序开发变得快速而简单 DbCAD dev允许用户使用以下功能 能用比较流行的光栅和矢量文件格式显示图画.地图和图像: 能同时显示多个图画.地图和图像文件,并且没有尺寸的限制: 能创建和编辑图形对象: 能向/从一个标准数据库中输入和输出矢量数据,然后使用DbCAD的低级函数或者直接通过选定的RDBMS来管理数据: 能用唯一的标识符将矢量实体和数据库记录连接在一起: 能添加光

MFC 加入背景图片并让控件背景透明

/*加入背景图片*/ BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此加入消息处理程序代码和/或调用默认值 CDialog::OnEraseBkgnd(pDC); HBITMAP   m_hBitmap; HDC           m_hBkDC; m_hBitmap   =   ::LoadBitmap(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP2)); m_hBkDC     =