修改控件背景色

zjfhgdx 2010-07-09 01:03:26


HBRUSH nEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
CBrush* rb;
rb=new CBrush;
rb->CreateSolidBrush(RGB(10,100,100));
return (HBRUSH)(rb->m_hObject);
}

为什么上面有一部分是白色的?
...全文
132 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
科学家 2010-09-21
哦!!原来楼主跟了这么多帖子问我,不好意思.好就没来,记得给分啊
回复
zjfhgdx 2010-07-12
不是cbrush的问题
回复
yibuyisheng 2010-07-12
好像CBrush不能在这个函数里面构造,我这样做的时候经常出问题,不知是什么原因
回复
zjfhgdx 2010-07-12
[Quote=引用 6 楼 thomtadie 的回复:]
不可设置成transparent啊,我也记得清楚,设置之后与你 的症状一样
[/Quote]
如果我一定要把它设置成transparent呢,有什么办法可以解这个症状吗?
回复
山伟 2010-07-12
不要设置成transparent
回复
科学家 2010-07-12
不可设置成transparent啊,我也记得清楚,设置之后与你 的症状一样
回复
zjfhgdx 2010-07-12
[Quote=引用 11 楼 visualeleven 的回复:]
引用 8 楼 zjfhgdx 的回复:
引用 6 楼 thomtadie 的回复:
不可设置成transparent啊,我也记得清楚,设置之后与你 的症状一样

如果我一定要把它设置成transparent呢,有什么办法可以解这个症状吗?

是刷新的问题,在你删除的以后,调用InvaldiateRect来强制刷新一下看看
[/Quote]
果然可以了. CEDIT刷新文字的代码到底在哪里啊?不在paint里,下班后跟踪代码看看
回复
zjfhgdx 2010-07-12
[Quote=引用 11 楼 visualeleven 的回复:]
引用 8 楼 zjfhgdx 的回复:
引用 6 楼 thomtadie 的回复:
不可设置成transparent啊,我也记得清楚,设置之后与你 的症状一样

如果我一定要把它设置成transparent呢,有什么办法可以解这个症状吗?

是刷新的问题,在你删除的以后,调用InvaldiateRect来强制刷新一下看看
[/Quote]
在收到vk_back键盘消息后调用incalidate?
InvaldiateRect好像是在内部调用onpaint的吧?cedit不是通过onpaint来输出文本的.
不是很清楚,我试试吧
回复
Eleven 2010-07-12
[Quote=引用 8 楼 zjfhgdx 的回复:]
引用 6 楼 thomtadie 的回复:
不可设置成transparent啊,我也记得清楚,设置之后与你 的症状一样

如果我一定要把它设置成transparent呢,有什么办法可以解这个症状吗?
[/Quote]
是刷新的问题,在你删除的以后,调用InvaldiateRect来强制刷新一下看看
回复
zjfhgdx 2010-07-10
[Quote=引用 4 楼 thomtadie 的回复:]
这事我记得我吃过亏,但我解决了。
反正这是现在的代码:
hBrush = ::CreateSolidBrush(COLORREF(p->BkColor));
SetBkColor(dc, COLORREF(p->BkColor));
SetTextColor(dc, COLORREF(p->FontColor));

return ((LRESULT) p->hBrush);
[/Quote]

我把bkmode设置成transparent后,删除字后不会自动刷新,也就是删除的字还在上面,但光标会移动.
要最小化,再还原才能把删除的字去掉.
这是怎么回事?
回复
科学家 2010-07-09
这事我记得我吃过亏,但我解决了。
反正这是现在的代码:
hBrush = ::CreateSolidBrush(COLORREF(p->BkColor));
SetBkColor(dc, COLORREF(p->BkColor));
SetTextColor(dc, COLORREF(p->FontColor));

return ((LRESULT) p->hBrush);
回复
zjfhgdx 2010-07-09
我把bkmode设置成transparent后,删除字后不会自动刷新,也就是删除的字还在上面,但光标会移动.
要最小化,再还原才能把删除的字去掉.
这是怎么回事?
回复
Eleven 2010-07-09
把CBrush br定义类的成员变量,不要new了。
在构造函数中br.CreateSolidBrush(RGB(10, 100, 100));

HBRUSH nEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkColor(RGB(10, 100, 100));
return (HBRUSH)rb;
}
回复
zjfhgdx 2010-07-09
是一个文本框
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告