MFC里怎么改变窗口上按钮控件的颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC里怎么改变窗口上按钮控件的颜色相关的知识,希望对你有一定的参考价值。

单文档窗口 基类CFormView 已经在view类里把窗口的背景色改成纯白色 我想把按钮控件也改成这种纯白色 试过在属性设置里改成透明不知为什么没用? 有什么其他方法? 只要单纯的改个颜色就行 编译器是vs2010

更改控钮控件的底色可以派生一个CButton类,然后重载DrawItem函数,在这个函数中将底色设成白色。然后添加WM_ERASEBKGND 消息处理函数,
//return CButton::OnEraseBkgnd(pDC);
return TRUE;
注释掉原来的 return 语句,改为直接返回 true;

//想从窗口中去更改按钮的底色,比较麻烦,除非你用勾子函数。追问

在OnCtlColor这方法其他控件背景能改   但按钮背景无法更改:

为什么呢?

追答

因为在窗口的OnCtlColor 之后,按钮控件还要调用自身的绘制函数DrawItem ,所以你的设置被庶盖了,也就无效了。

追问

那你说的这个方法具体怎么操作啊 不会额

追答

1、添加一个CButton类派类 CExpandBTN
2、重载 CExpandBTN 的DrawItem函数如下
void CExpandBTN::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)

CRect rect;
GetClientRect(&rect);
CDC* pDC1=CDC::FromHandle(lpDrawItemStruct->hDC);
CBrush bsh1;
bsh1.CreateSolidBrush(RGB(255,0,0));
//MemDC.SelectObject(m_BKBmp);
pDC1->SetBkMode(TRANSPARENT);
pDC1->FillRect(&rect,&bsh1);
CString str1;
GetWindowText(str1);
pDC1->DrawText(str1,&rect,DT_CENTER);
return ;

3、将原来的CButton变量,改成CExpandBTN
4、ok;

追问

CButton变量 ? 我没定义过这种变量啊

追答

那你的按钮是怎么生成的?可以为它添加一个控制型变量。

追问

直接控件放上去的啊 是的CFormView类

追答

切换到资源视图。右键对应的按钮,添加变量。

追问

添加了 没有用 搞不懂

追答

有没有把它的变量类型改成
3、将原来的CButton变量,改成CExpandBTN?

有没有把它的变量类型改成
3、将原来的CButton变量,改成CExpandBTN?

追问

改了啊

参考技术A http://wenku.baidu.com/view/ab23428f680203d8ce2f24ce.html追问

这个不好用

请问Winform里面怎么单击按钮来改变窗体背景图片?(C#)

就是想要人性化的选择。
单击一次按钮可以换一次窗体背景图片
注意哦,是改变背景图片!!!不是背景颜色!!!
因为我在网上看到的都是改变背景颜色而不是改变背景图片~~~
所以请哪位高手可以告诉我!!!
拜托了!
谢谢啊~~~~
时间紧张~~~请大侠速速回答~~~

参考技术A 你可以在窗体上加个ImageList控件 加上后该控件出现在窗体设计模式的下面 点一下它 然后看右边的属性 有个属性名为Images 点一下旁边的按钮 往里面加你需要的图片,可连续加图片
然后回到你的按钮事件里 例如:
int i=0;
private void button3_Click(object sender, EventArgs e)//鼠标单击按钮事件

if (i > 2)//图片数
i = 0;
this.BackgroundImage = imageList1.Images[i];
i++;

本回答被提问者采纳
参考技术B button 的click事件响应里写

this.picturebox.image = image1;

以上是关于MFC里怎么改变窗口上按钮控件的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改MFC按钮的背景色

在MFC 如何设置按钮的颜色

求MFC高人 MFC中怎么样设置字体颜色

VC++如何改变按钮背景色

MFC里面画矩形 ,怎么改变矩形边框颜色?

我想围绕窗体中的按钮控件画一个矩形,然后在矩形里填充图片或颜色,用API怎么做?高分