VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1133|回复: 3

[已解决]mfc怎么改变ICheckEditor的字体颜色

[复制链接]
57_avatar_middle
最佳答案
0 
donate_vip 发表于 2021-8-9 17:51:47 | 显示全部楼层 |阅读模式
mfc怎么改变ICheckEditor的字体颜色
最佳答案
31_avatar_small
2021-8-11 20:53:14
OnInitDialog()中设置主题,这一步是必须的,不可省略。

  1. // TODO: 在此添加额外的初始化代码
  2. HWND hwnd = GetDlgItem(IDC_CHECK3)->GetSafeHwnd();
  3. SetWindowTheme(hwnd, _T(""), _T(""));
复制代码

重写OnCtlColor方法 设置颜色
  1. HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  2. {
  3.         HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

  4.         // TODO:  在此更改 DC 的任何特性
  5.         if (pWnd->GetDlgCtrlID() == IDC_CHECK3)
  6.         {
  7.         // 设置文本颜色
  8.                 COLORREF textColor = pDC->SetTextColor(RGB(255, 0, 0));
  9.         // 设置背景颜色
  10.                 COLORREF bkColor = pDC->SetBkColor(0xF5F5F5);
  11.         }
  12.        
  13.         // TODO:  如果默认的不是所需画笔,则返回另一个画笔
  14.         return hbr;
  15. }
复制代码

继承CButton类自绘CheckBox,文本颜色、背景颜色、字体都可以自行设置,CSDN有现成的例子。




上一篇:ICheckEditor怎么把caption文字改变颜色呀
下一篇:求组强制类型转换相关
31_avatar_middle
最佳答案
62 
在线会员 发表于 2021-8-11 21:12:09 | 显示全部楼层
忘了上图,现在上一张。
mfc怎么改变ICheckEditor的字体颜色
31_avatar_middle
最佳答案
62 
在线会员 发表于 2021-8-11 20:53:14 | 显示全部楼层    本楼为最佳答案   
bestAnswer
OnInitDialog()中设置主题,这一步是必须的,不可省略。

  1. // TODO: 在此添加额外的初始化代码
  2. HWND hwnd = GetDlgItem(IDC_CHECK3)->GetSafeHwnd();
  3. SetWindowTheme(hwnd, _T(""), _T(""));
复制代码

重写OnCtlColor方法 设置颜色
  1. HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  2. {
  3.         HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

  4.         // TODO:  在此更改 DC 的任何特性
  5.         if (pWnd->GetDlgCtrlID() == IDC_CHECK3)
  6.         {
  7.         // 设置文本颜色
  8.                 COLORREF textColor = pDC->SetTextColor(RGB(255, 0, 0));
  9.         // 设置背景颜色
  10.                 COLORREF bkColor = pDC->SetBkColor(0xF5F5F5);
  11.         }
  12.        
  13.         // TODO:  如果默认的不是所需画笔,则返回另一个画笔
  14.         return hbr;
  15. }
复制代码

继承CButton类自绘CheckBox,文本颜色、背景颜色、字体都可以自行设置,CSDN有现成的例子。
57_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-8-10 14:58:11 | 显示全部楼层
Q:用WM_CTLCOLOR无法改变checkbox和radiobox的字体颜色,但是将stdafx.h里如下的代码注释掉就可以了,这是为什么呢  //#ifdef _UNICODE //#if defined _M_IX86 //#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") //#elif defined _M_X64 //#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") //#else //#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") //#endif //#endif  A:加上这些代码后会调用默认的Theme修饰控件 而且是在WM_CTLCOLOR改变checkbox和radiobox的字体颜色之后, 所以你做的工作被覆盖了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-10 09:17

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表