60改变MFC按钮控件字体.docxVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
60改变MFC按钮控件字体

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

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档