MFC CEdit disable时设置背景颜色
MFC作为一套非常老旧落后的框架,对于很多控件特效的支持还是非常有限,不少东西都要自己去手绘,做起来真的是太痛苦了。希望mfc跟ie一样,快快死掉。
今天又是一个奇怪的需求,要求输入框在disable时,背景颜色设置为白色。disable跟enable样式完全不做区分,UI设计也是人才。
CEdit没有提供SetBackgroundColor的接口,需要自己去绘制。
在DLG.cpp里,响应WM_CTLCOLOR
消息,在OnCtlColor
里添加代码:
if (nCtlColor == CTLCOLOR_STATIC)
{
switch (pWnd->GetDlgCtrlID())
{
case IDC_EDIT1:
{
HBRUSH hh = ::CreateSolidBrush(RGB(255, 255, 255));
return hh;
}
default:
break;
}
}
这里要注意的是,如果要改变enable时的文字颜色、背景颜色,用的不是CTLCOLOR_STATIC
而是CTLCOLOR_EDIT
,也就是这里困扰我很久,以为CEdit不能改变默认的灰色disable背景颜色。
最后要说的是,CEdit只能更改disable时的背景颜色,没法改变文字的颜色。如果有产品设计出这种玩意儿,我的建议是抽他两大耳光。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗