怎么改变窗体的颜色呢?

yeyuanzhi2000 2008-04-01 12:23:43
怎么改变窗体的颜色呢?最好贴出源码,谢谢!!
...全文
61 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
djlxue 2008-04-01
最后要返回HBRUSH hbr
回复
yeyuanzhi2000 2008-04-01
先新建一个画刷
public:
CBrush m_brush;

在OnCtlColor(继承下来的)函数返回该画刷
HBRUSH CPaAlarmDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd,nCtlColor);

m_brush.CreateSolidBrush(RGB(255,0,0));
return m_brush;
}

颜色是改变了,但这段代码运行时出现错误,为什么?
回复
iyranly 2008-04-01
添加WM_ERASEBKGND事件,OnEraseBkgnd(CDC* pDC)

 CBrush brush(RGB (250,250,250));
CBrush* pOldBrush = pDC->SelectObject (&brush);
CRect rcClip;
pDC->GetClipBox(&rcClip);
pDC-> PatBlt(rcClip.left , rcClip.top ,rcClip.Width() , rcClip.Height() ,PATCOPY );
pDC-> SelectObject (pOldBrush );
return TRUE;
回复
naixian1983 2008-04-01
在InitInstance()里加入SetDialogBkColor()

SetDialogBkColor(RGB(220,220,220),RGB(0,0,0));
回复
烂番 2008-04-01
你是要改变某个控件的背景色吧??而不是窗体的背景色,,,,,,,,

单单上面的代码是没问题的,
只是 m_brush.CreateSolidBrush(RGB(255,0,0));
HBRUSH hBr =CreateSolidBrush(RGB(255,0,0));
return (HBRUSH)hBr;

用局部变量就OK了吧??

如果还有错 那就不一定是这个响应函数出错了
回复
yeyuanzhi2000 2008-04-01
返回HBRUSH hbr还更出错
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-01 12:23
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……