前言

在开发AutoCAD-扩展工具的过程中发现现在的CAD颜色为深色,面MFC的颜色还是原来的灰色。所以产生的使用MFC控件自绘的方式,改变扩展工具颜色的的想法。

在参考的CSDN的各种资料后,发现:在继承CAcUiStringEdit类后,仅需要重写:
afx_msg HBRUSH CtlColor(CDC* /pDC/, UINT /nCtlColor/);
afx_msg void OnNcPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnEnSetfocus();
afx_msg void OnEnKillfocus();
这几个函数就可以改变原CAcUiStringEdit的风格。

代码如下:

//------------------------------------------------------------
HBRUSH CExFilledStringEdit::CtlColor(CDC* pDC, UINT nCtlColor){// TODO:  在此更改 DC 的任何特性pDC->SetTextColor(m_TextColor);pDC->SetBkMode(TRANSPARENT);return (HBRUSH)m_BlackBrush.GetSafeHandle();// TODO:  如果不应调用父级的处理程序,则返回非 null 画笔// return NULL;
}
//--------------------------------------------------------------
void CExFilledStringEdit::OnNcPaint(){// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CAcUiStringEdit::OnNcPaint()CPaintDC dc(this);CPen *tpen = NULL;CPen kpen(PS_SOLID, 1, m_BoxColor);CRect krect;tpen = dc.SelectObject(&kpen);dc.RoundRect(m_OutRect_2, CPoint(16, 16));dc.RoundRect(m_OutRect_1, CPoint(14, 14));tpen->Detach();tpen = NULL;Invalidate(TRUE);Default();
}
//---------------------------------------------------------------
BOOL CExFilledStringEdit::OnEraseBkgnd(CDC* pDC){// TODO: 在此添加消息处理程序代码和/或调用默认值pDC->FillRgn(&m_FillRgn, &m_BlackBrush);return TRUE;// return CAcUiStringEdit::OnEraseBkgnd(pDC);
}
//--------------------------------------------------------------
void CExFilledStringEdit::OnEnSetfocus(){// TODO: 在此添加控件通知处理程序代码m_BlackColor = m_SBlackColor;m_BlackBrush.Detach();m_BlackBrush.Attach(m_SEditBrush);Invalidate(TRUE);
}
//--------------------------------------------------------------
void CExFilledStringEdit::OnEnKillfocus(){// TODO: 在此添加控件通知处理程序代码m_BlackColor = m_KBlackColor;m_BlackBrush.Detach();m_BlackBrush.Attach(m_KEditBrush);Invalidate(TRUE);
}
//-------------------------------------------------------------
void CExFilledStringEdit::SetTextColor(COLORREF kColor = RGB(255, 255, 255)) {m_TextColor = kColor;                                   //  文字颜色m_BlackColor = RGB(92, 92, 92);                            //  背景颜色(可变)m_SBlackColor = RGB(48, 48, 48);                       //  当光标在编辑框内,背景颜色m_KBlackColor = RGB(92, 92, 92);                      //  当光标移出编辑框,背景颜色m_BlackBrush.Detach();m_SEditBrush.Detach();m_KEditBrush.Detach();m_BlackBrush.CreateSolidBrush(m_BlackColor);         //  背景笔刷(可变)m_SEditBrush.CreateSolidBrush(m_SBlackColor);           //  当光标在编辑框内,背景颜色m_KEditBrush.CreateSolidBrush(m_KBlackColor);          //  当光标移出编辑框,背景颜色
}
/*
--------------------------------------------------------------void SetEditColor(COLORREF kColor = RGB(255, 255, 255), COLORREF sColor = RGB(48, 48, 48),COLORREF fColor = RGB(92, 92, 92))COLORREF kColor;   文字的颜色COLORREF sColor;   光标  在 编辑框时,编辑框的底色。COLORREF fColor;   光标 离开 编辑框时,编辑框的底色。
-----------------------------------------------------------------
*/
void CExFilledStringEdit::SetEditColor(COLORREF kColor = RGB(255, 255, 255), COLORREF sColor = RGB(48, 48, 48), COLORREF fColor = RGB(92, 92, 92)) {m_TextColor = kColor;                                   //  文字颜色m_BlackColor = fColor;                                 //  背景颜色(可变)m_SBlackColor = sColor;                                    //  当光标在编辑框内,背景颜色m_KBlackColor = fColor;                                   //  当光标移出编辑框,背景颜色m_BlackBrush.Detach();m_SEditBrush.Detach();m_KEditBrush.Detach();m_BlackBrush.CreateSolidBrush(m_BlackColor);         //  背景笔刷(可变)m_SEditBrush.CreateSolidBrush(m_SBlackColor);           //  当光标在编辑框内,背景颜色m_KEditBrush.CreateSolidBrush(m_KBlackColor);          //  当光标移出编辑框,背景颜色
}
//----------------------------------------------------------
void CExFilledStringEdit::SetBoxColor(COLORREF kColor = RGB(30,30,30)) {m_BoxColor = kColor;
}

效果如下:
同时可以改变正在编辑时的编辑框背景色。
该文件由Visual Studio 2017 与 ArxObjectArx

总结

在运行过程中还是的鼠标快速划过编辑框是,编辑框闪烁的问题,没有解决。有高手能解决,请与我联系:243071921@qq.com.谢谢!
资源下载地址:
https://download.csdn.net/download/yujiyang/85052056

继承CAcUiStringEdit,改变编辑框的字体颜色,以及背景的颜色相关推荐

  1. 文本编辑器中实现自定义编辑框中字体和大小的功能

    文章目录 1 文本编辑器中实现自定义编辑框中字体和大小的功能 1 文本编辑器中实现自定义编辑框中字体和大小的功能 实现思路: 通过QFontDialog选择字体及大小. 将QFont对象设置到文本编辑 ...

  2. Microsoft Office PPT如何批量修改所有页文本框的字体大小、种类以及颜色

    1. 上方,视图--大纲视图 左侧改变 2. 点击每一页前的方框,然后按 ctrl+a 键       选中    全选 3.  上方切换到开始即可修改

  3. MFC实现多编辑框的文本字体改变

    以3个静态文本编辑框为例 1.在资源视图右击编辑框,为各个编辑框添加EDIT类,变量: 2. 点击完成后,在该控件所在的.h文件中声明一个CFont类变量:如CFont   m_editFont; C ...

  4. 怎么改变ADS1.2的字体大小

    Edit中的preferences中的Font &Tabs可以改变编辑框中的字体大小

  5. 【MFC】在工具栏中添加编辑框

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 在工具栏中添加编辑框可 ...

  6. HTML、CSS定义字体、颜色、背景等属性

    字体属性 字体font-family:"字体1","字体2",...    例:font-family:"宋体"; 字号font-size: ...

  7. css3从入门到熟练运用(三):炫目字体,多样背景和渐变颜色,神奇边框

    字体 字体随处可见,网页上看到的任何字都包含字体的使用,怎么使用呢? font-family 定义字体系列 传统字体 我们在开发一个互联网项目首先要做的就是字体选择,通常我们在设计的时候尽量去考虑系统 ...

  8. IDEA修改编辑与控制台字体大小

    1 改变编辑窗口字体大小 1.1 将字体大小设置为固定值 我们可以将编辑窗口的字体大小设置为固定值 1.2 动态改变字体的大小 我们还可以通过Ctrl+鼠标滚轮改变编辑窗口的字体大小,设置如下: 1. ...

  9. MFC(九)编辑框的控件

    在控件里设置值 1.新疆三个编辑框,将其ID设置为IDC_EDIT1,IDC_EDIT2,IDC_EDIT3 2.如果我们想要编辑框有默认文字,如何修改呢?我们就需要对这个控件进行操作 3.右键Cbi ...

最新文章

  1. python【Matlibplot绘图库】-主要概念
  2. 初看Mybatis 源码 (二) Java动态代理类
  3. scrapy爬虫值Items
  4. /usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
  5. ASP.NET Core 2.0利用MassTransit集成RabbitMQ
  6. 安卓效率微商_微商人脉通app下载-微商人脉通 安卓版v2.5.5-PC6安卓网
  7. [js] 写一个 document.querySelector 的逆方法
  8. wepy组件子父传值_【WePY小程序框架实战三】-组件传值
  9. 【java笔记】模拟B/S服务器
  10. [转载] Python Pandas 的 all和any方法
  11. 如何在Nintendo Switch上管理和传输数据
  12. C++行为型模式-中介者模式
  13. 给网站添加HTTPS(添加SSSL证书)
  14. java实现清除图片水印_Java 添加、删除PPT文本和图片水印
  15. Go初始化变量的招式
  16. VS调试C++程序,提示无法启动程序,“xx.exe”。系统找不到指定文件的解决办法
  17. 第三方客户端配置个人教育邮箱(以华北电力大学邮箱为例)
  18. imresize 函数用法
  19. 安卓中socket长连接和websocket长连接的实现
  20. 火星存在大型地下水系统,火星或曾是一片海洋

热门文章

  1. 517编程3380造素数
  2. win10 使用多桌面的两种方式
  3. 数组操作 push()
  4. html css分别是什么单位,CSS的deg是什么单位?
  5. WLW blog 小技巧
  6. Agora Flat:在线教室的开源初体验
  7. Flink 结合 布隆过滤器(BloomFilter) 实现去重
  8. linux下的IO重定向与管道相关的知识简析
  9. 使用scrapy简单爬取网易新闻
  10. 华三交换机irf堆叠以及BFD检测配置