继承CAcUiStringEdit,改变编辑框的字体颜色,以及背景的颜色
–
前言
在开发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 文本编辑器中实现自定义编辑框中字体和大小的功能 实现思路: 通过QFontDialog选择字体及大小. 将QFont对象设置到文本编辑 ...
- Microsoft Office PPT如何批量修改所有页文本框的字体大小、种类以及颜色
1. 上方,视图--大纲视图 左侧改变 2. 点击每一页前的方框,然后按 ctrl+a 键 选中 全选 3. 上方切换到开始即可修改
- MFC实现多编辑框的文本字体改变
以3个静态文本编辑框为例 1.在资源视图右击编辑框,为各个编辑框添加EDIT类,变量: 2. 点击完成后,在该控件所在的.h文件中声明一个CFont类变量:如CFont m_editFont; C ...
- 怎么改变ADS1.2的字体大小
Edit中的preferences中的Font &Tabs可以改变编辑框中的字体大小
- 【MFC】在工具栏中添加编辑框
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 在工具栏中添加编辑框可 ...
- HTML、CSS定义字体、颜色、背景等属性
字体属性 字体font-family:"字体1","字体2",... 例:font-family:"宋体"; 字号font-size: ...
- css3从入门到熟练运用(三):炫目字体,多样背景和渐变颜色,神奇边框
字体 字体随处可见,网页上看到的任何字都包含字体的使用,怎么使用呢? font-family 定义字体系列 传统字体 我们在开发一个互联网项目首先要做的就是字体选择,通常我们在设计的时候尽量去考虑系统 ...
- IDEA修改编辑与控制台字体大小
1 改变编辑窗口字体大小 1.1 将字体大小设置为固定值 我们可以将编辑窗口的字体大小设置为固定值 1.2 动态改变字体的大小 我们还可以通过Ctrl+鼠标滚轮改变编辑窗口的字体大小,设置如下: 1. ...
- MFC(九)编辑框的控件
在控件里设置值 1.新疆三个编辑框,将其ID设置为IDC_EDIT1,IDC_EDIT2,IDC_EDIT3 2.如果我们想要编辑框有默认文字,如何修改呢?我们就需要对这个控件进行操作 3.右键Cbi ...
最新文章
- python【Matlibplot绘图库】-主要概念
- 初看Mybatis 源码 (二) Java动态代理类
- scrapy爬虫值Items
- /usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
- ASP.NET Core 2.0利用MassTransit集成RabbitMQ
- 安卓效率微商_微商人脉通app下载-微商人脉通 安卓版v2.5.5-PC6安卓网
- [js] 写一个 document.querySelector 的逆方法
- wepy组件子父传值_【WePY小程序框架实战三】-组件传值
- 【java笔记】模拟B/S服务器
- [转载] Python Pandas 的 all和any方法
- 如何在Nintendo Switch上管理和传输数据
- C++行为型模式-中介者模式
- 给网站添加HTTPS(添加SSSL证书)
- java实现清除图片水印_Java 添加、删除PPT文本和图片水印
- Go初始化变量的招式
- VS调试C++程序,提示无法启动程序,“xx.exe”。系统找不到指定文件的解决办法
- 第三方客户端配置个人教育邮箱(以华北电力大学邮箱为例)
- imresize 函数用法
- 安卓中socket长连接和websocket长连接的实现
- 火星存在大型地下水系统,火星或曾是一片海洋