没有合适的资源?快使用搜索试试~ 我知道了~
VC改变对话框按钮字体颜色和背景的解决方案
需积分: 25 219 浏览量
2018-06-25
08:55:13
上传
评论
收藏 1.37MB PDF 举报
VC改变对话框按钮字体颜色和背景的解决方案 要想修改CButton类按钮背景颜色和文字颜色,必须利用自绘方法对按钮进行重新绘制。这可以通过定义一个以CButton为基 类的新按钮类来实现。
资源推荐
资源详情
资源评论







posts - 88, comments - 37, trackbacks - 0
VC改变对话框按钮字体颜色和背景的解决方案(转)
VC改变对话框按钮字体颜色和背景的解决方案
| 浏览数(1047) | 评论数(0) | 2009-09-23
要想修改CButton类按钮背景颜色和文字颜色,必须利用自绘方法对按钮进行重新绘制。这可以通过定义一个以CButton为基
类的新按钮类来实现。以下为具体的实现方法:
方法一:
加入一个新类,类名:CButtonEx,基类:CButton。
在头文件 CButtonEx.h 中加入以下变量和函数定义:
private:
int m_Style; //按钮形状(0-正常,1-当前,2-按下,3-锁定)
BOOL b_InRect; //鼠标进入标志
allseen物联互通
专注物联网嵌入式开发
博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理
公告
http://www.csto.com/
http://www.taskcity.com/
http://www.sxsoft.com/
http://www.zhubajie.com/
昵称:物联互通
园龄:7年5个月
粉丝:28
关注:18
+加关注
< 2017年2月 >
日 一 二 三 四 五 六
29 30 31 1 2 3 4

CString m_strText; //按钮文字
COLORREF m_ForeColor; //文本颜色
COLORREF m_BackColor; //背景色
COLORREF m_LockForeColor; //锁定按钮的文字颜色
CRect m_ButRect; //按钮尺寸
CFont* p_Font; //字体
void DrawButton(CDC *pDC); //画正常的按钮
// 接口函数
public:
void SetText(CString str);
void SetForeColor(COLORREF color); //设置文本颜色
void SetBkColor(COLORREF color); //设置背景颜色
void SetTextFont(int FontHight,LPCTSTR FontName); //设置字体
在 CButtonEx.cpp 的构造函数中初始化变量:
CButtonEx::CButtonEx()
{
m_Style = 0; //按钮形状风格
b_InRect = false; //鼠标进入标志
m_strText = _T(""); //按钮文字(使用默认文字)
m_ForeColor = RGB(0,0,0); //文字颜色(黑色)
m_BackColor = RGB(243,243,243); //背景色(灰白色)
m_LockForeColor = GetSysColor(COLOR_GRAYTEXT); //锁定按钮的文字颜色
p_Font = NULL; //字体指针
}
用ClassWizard添加下列消息函数:
PreSubclassWindow();
DrawItem();
onMouseMove();
OnLButtonDown();
OnLButtonUp();
在各函数内加入代码:
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 1 2 3 4
5 6 7 8 9 10 11
搜索
找找看
谷歌搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
AP(2)
capwap(2)
WTP(2)
OPENCapwap(2)
openni(1)
变换背景(1)
穿越(1)
计划(1)
嵌入式(1)
人物扣图(1)
更多
随笔分类
android开发(1)
linux(5)
opencv(6)
VC(6)
机器学习(1)
开发(3)
流媒体(9)
嵌入式开发(3)
图像处理(10)
心情(7)

void CButtonEx::PreSubclassWindow()
{
ModifyStyle( 0, BS_OWNERDRAW ); //设置按钮属性为自画式
CButton::PreSubclassWindow();
}
PreSubclassWindow()在按钮创建前自动执行,所以我们可以在其中做一些初始工作。这里我只做了一项工作,就是为按钮
设置属性为“自绘”式,这样,用户在添加按钮后,就不需设置“Owner draw”属性了。
void CButtonEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC = CDC::FromHandle( lpDrawItemStruct->hDC );
m_ButRect = lpDrawItemStruct->rcItem; //获取按钮尺寸
if( m_strText.IsEmpty() )
GetWindowText( m_strText ); //获取按钮文本
int nSavedDC = pDC->SaveDC();
VERIFY( pDC );
DrawButton( pDC ); //绘制按钮
pDC->RestoreDC( nSavedDC );
}
DrawItem()函数是一个关键函数,按钮的绘制工作就在这里进行,它的作用相当于对话框中的OnPaint()函数和视图中的
OnDraw()函数。
这里我做了三项工作:获取按钮尺寸、获取按钮文本、绘制按钮。其中绘制工作在自定义函数DrawButton()中完成。以下就
是绘制过程:
void CButtonEx::DrawButton(CDC *pDC)
{
//调整状态
if( m_Style==3 ) m_Style = 0;
if( GetStyle() & WS_DISABLED )
m_Style = 3; //禁止状态
//根据状态调整边框颜色和文字颜色
COLORREF bColor, fColor; //bColor为边框颜色,fColor为文字颜色
学习(3)
随笔档案
2014年8月 (2)
2014年1月 (1)
2013年9月 (2)
2013年7月 (1)
2012年7月 (1)
2012年5月 (1)
2012年4月 (1)
2012年3月 (1)
2012年1月 (1)
2011年12月 (2)
2011年9月 (1)
2011年8月 (3)
2011年7月 (4)
2011年6月 (4)
2011年5月 (1)
2011年3月 (4)
2011年2月 (1)
2010年12月 (1)
2010年11月 (1)
2010年10月 (1)
2010年9月 (4)
2010年8月 (2)
2010年7月 (10)
2010年6月 (6)
2010年5月 (4)
2010年3月 (2)
2010年2月 (1)
2010年1月 (1)
2009年12月 (6)
2009年11月 (2)
2009年10月 (3)
2009年9月 (11)
2009年8月 (2)
最新评论
1. Re:嵌入式linux应用程序移植方
法总结
博主你好, 江浩写得CAPWAP移
植进展可以发我一份吗,邮箱是hn-
cai@163.com,谢谢
--napoleaon
剩余10页未读,继续阅读
资源评论


youmengying
- 粉丝: 13
- 资源: 60
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
