标题:急问:怎样改变控件在禁用状态下的字体颜色
只看楼主
cityhunter
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-5-17
 问题点数:0 回复次数:3 
急问:怎样改变控件在禁用状态下的字体颜色
所有控件在EnableWindow(false)之后,默认的字体颜色是灰色!怎么改变此时的颜色? 比较着急,恳请高手指教
搜索更多相关主题的帖子: 字体颜色 控件 状态 false EnableWindow 
2005-05-17 21:09
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
得分:0 

映射对话框的WM_CTLCOLOR消息: HBRUSH 对话框类::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TOD 在此更改 DC 的任何属性 if (nCtlColor == CTLCOLOR_EDIT) { pDC->SetTextColor(RGB(255,0,0)); } // TOD 如果默认的不是所需画笔,则返回另一个画笔 return hbr; }

[此贴子已经被作者于2005-5-18 9:24:45编辑过]


I am a big fan of c plus plus.
2005-05-18 08:54
cityhunter
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-5-17
得分:0 
您所说的这种方法在控件处于正常状态是有效的,但是当控件处于不能用即EnableWindow(false)之后,父窗口就会认为其不是有效控件,不再映射其WM_CTLCOLOR消息,所以不起作用,字体此时的颜色还是默认的灰色。 麻烦您再帮我想想其他办法,我真得快没辙了
2005-05-18 11:57
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
得分:0 
那就这样:
(1)把编辑框的背景色设置为禁用时候的颜色
(2)把编辑框的EN_UPDATE消息映射了,在其它的地方设置一个BOOL值的变量,当这个变量为真的时候,就不能输入新的字符.

这样一来,字体的颜色也能改变了,也模拟出禁用的样子了.

I am a big fan of c plus plus.
2005-05-19 08:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-18517-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.412868 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved