- 4
- 0
- 约2.37千字
- 约 3页
- 2017-06-11 发布于北京
- 举报
MFC窗口各控件的颜色和字体的设置很多人定义了基于MFC的程序项目,当设计界面使用控件时,却不知道如何对各控件进行字体与颜色的设计;其实这些修改是需要动手添加代码的,这方面的修改在控件属性里是没有现成的,这不同于.net定义的项目,它的是有直接属性修改的。我在原文的基础上做了修改与完善,也可参见原文原文:/visual-studio/vc/74759.htm1、改变对话框的底色在对话框的类中添加一个 private : CBrushm_brush;的成员变量。在类的构造函数中添加如下代码:m_brush.CreateSolidBrush(RGB(0,0,255));???? //初始化为蓝色为对话框添加一个WM_CTLCOLOR消息响应函数,专门为控件着色的消息响应函数,代码如下:HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);//return hbr;????????????????????????return m_brush;??????????????????????}当然,.h文件里也要对函数进行预定义的;此时,该对话框的背景色已经全为蓝色了。2、如果我们要设置某一个对话框控件的底色和文字颜色时只要将上面return m_brush;改为:if (pWnd-GetDlgCtrlID()==IDC_LINE_STYLE)????{?? pDC-SetTextColor(RGB(0,255,0));???? //pDC-SetBkMode(TRANSPARENT);???? pDC-SetBkColor(RGB(255,0,0));???? return m_brush;???????????????}return hbr;????????????注意如果要设置单行EDIT的文字背景色,需要使用SetBkColor设置,而SetBkMode即使为透明,文字的背景仍为系统的默认色。按钮控件好像不能实现,大家可以试试,是不是按钮真的不能实现这些颜色变化。3、利用上面的原理,在对话框控件响应OnPaint消息时,将一个静态文本显示所设置字体的文字。添加一个静态文本框,改名为IDC_TEXT。添加一个字体成员变量 private: CFontm_font;在对话框的构造函数中对字体进行初始化:m_font.CreatePointFont(200,华文行楷);在2的return hbr;之前加入如下代码:if (pWnd-GetDlgCtrlID()==IDC_TEXT)??{?? pDC-SelectObject(m_font);???}注意,因为OnPaint消息响应函数是在控件被绘制之前触发的,它所返回的HBRUSH画刷句柄,便携带了我们所设置的这些属性。此时,静态文本框的字体就变为你所需要的那种字体了。4、如果要改变OK按钮的文字颜色,靠上面的方式是不行的。我们需要创建一个新的从CButton类继承的CTestBtn类,并添加一个类的DrawItem的虚函数,类与虚函数都可以用向导来定义,加入以下代码:// TODO: Add your code to draw the specified item??? UINT uStyle = DFCS_BUTTONPUSH;?? // This code only works with buttons.?? ASSERT(lpDrawItemStruct-CtlType == ODT_BUTTON);?? // If drawing selected, add the pushed style to DrawFrameControl.?? if (lpDrawItemStruct-itemState ODS_SELECTED)????? uStyle |= DFCS_PUSHED;?? // Draw the button frame.?? ::DrawFrameControl(lpDrawItemStruct-hDC, lpDrawItemStruct-rcItem,DFC_BUTTON, uStyle);?? // Get the buttons text.?? CStringstrText;?? GetWindowText(strText);?? // Draw the button text using the text color red.?? COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct-hDC, RGB(255
您可能关注的文档
- 50道家常素菜做法素食菜谱.doc
- 50道色香味美的凉拌菜(41-50).doc
- 50部】经典难忘的影视剧作品【80后】童鞋的珍贵记忆.doc
- 50首适合一个人在自习室听的歌.doc
- 51CTO学院-学习Excel2013的最佳方式-表格之道(专业版).docx
- 51单片机LED点阵屏显示设计.doc
- 525心理健康系列讲座竞标标书.doc
- 52王军求解北京城市结构之困.doc
- 52种毒花草别放在卧室里.doc
- 541细菌和真菌的分布(2课时).doc
- 2026及未来5年中国电磁铁行业市场发展监测及投资战略咨询报告.docx
- 2026及未来5年中国建筑工程机械行业市场发展监测及投资战略规划报告.docx
- 2026及未来5年中国硫化镍行业市场调研分析及投资战略规划报告.docx
- 2026及未来5年中国烷化剂市场运营态势及发展前景预测报告.docx
- 2026年涤纶细旦长丝项目可行性研究报告(市场数据调查、监测研究).docx
- 2026年弓型虫抗体试剂项目可行性研究报告(市场数据调查、监测研究).docx
- 2026年拖链系统用高柔性数据传输电缆项目可行性研究报告(市场数据调查、监测研究).docx
- 2025年中国水晶圆盘市场调查研究报告.docx
- 2025年中国长网双辊挤浆机市场调查研究报告.docx
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
原创力文档

文档评论(0)