修改控件背景色

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);
}

为什么上面有一部分是白色的?
...全文
192 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
是一个文本框

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧