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时的背景颜色,没法改变文字的颜色。如果有产品设计出这种玩意儿,我的建议是抽他两大耳光。

posted @   柴承训  阅读(326)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示
主题色彩