如何改变CEdit的背景色,好象用WM_CTLCOLOR可以,能不能给个例子?

xiaoao 2001-12-03 11:40:39
先谢过。
...全文
330 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoao 2001-12-06
  • 打赏
  • 举报
回复
清泉和朗之间的方法都很好。
to: kuangning(郎之间,穷人)
不过如果用你的这种方法,要同时再改变如EDIT的背景,我用
else if (nCtlColor== CTLCOLOR_EDIT)
  {
    pDC- >SetBkMode(TRANSPARENT);
    pDC- >SetTextColor(RGB(255,255,255));
    //此处设置字体的颜色
    return (HBRUSH)m_brush.GetSafeHandle();
  }
没有改变EDIT,怎么用你这种方法同时改变多个控件。
我追加加分20分。谢
  
kuangning 2001-12-06
  • 打赏
  • 举报
回复
要改变BUTTON颜色,自己写一个类还好一些
Arid 2001-12-06
  • 打赏
  • 举报
回复
这种方法很好,但是好象对BUTTON没有效果
灌注
灌注
灌注
灌注
灌注
kuangning 2001-12-06
  • 打赏
  • 举报
回复
如果要改变edit的颜色,就在个加入一个成员变量: CBrush m_Editbrush;
在初始化时设定背景颜色: m_brush.CreateSolidBrush( RGB(128,128,255 ));
m_Editbrush.CreateSolidBrush(RGB(255,123,123));
WM_CTLCOLOR事件中:
if(nCtlColor== CTLCOLOR_LISTBOX)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));//此处设置字体的颜色
return (HBRUSH)m_brush.GetSafeHandle();
}
else if (nCtlColor== CTLCOLOR_EDIT)
{

pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));//此处设置字体的颜色

return (HBRUSH)m_Editbrush.GetSafeHandle();
}
else
return CDialog::OnCtlColor (pDC, pWnd, nCtlColor);
return hbr;

kuangning 2001-12-05
  • 打赏
  • 举报
回复
① 先创建一个基于对话框的工程,命名为test,然后在对话框上加入一个ListBox控件。
  ② 在testDlg.h中加入一个成员变量:CBrush m_brush;
  ③ 在OnInitDialog()中,加入m_brush.CreateSolidBrush( RGB(0,0,0 );此处设置的RGB值可以改变ListBox的背景色。为了观看ListBox中字的颜色变化,我们给ListBox加入几个字:利用Class Wizard给ListBox加入一个Control类型的成员变量m_ctrlListBox,然后在OnInitDialog()加入如下所示的代码:
  m_ctrlListBox.AddString("1号选手");
  m_ctrlListBox.AddString("2号选手");
  ④ 点击Class Wizard,给testDlg加入WM_CTLCOLOR事件,单击Edit Code按钮,然后把改函数的内容替换为如下代码:
  if(nCtlColor== CTLCOLOR_LISTBOX)
  {
    pDC- >SetBkMode(TRANSPARENT);
    pDC- >SetTextColor(RGB(255,255,255));
    //此处设置字体的颜色
    return (HBRUSH)m_brush.GetSafeHandle();
  }
  else
    return CDialog::OnCtlColor (pDC, pWnd, nCtlColor);
  现在编译并运行改程序,可以看到列表框已经变成黑色而其中的字已经变为白色
清泉ys 2001-12-05
  • 打赏
  • 举报
回复
HBRUSH CMFCDemoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
CWnd* pWnd1=GetDlgItem(IDC_EDIT1);
if(nCtlColor==CTLCOLOR_EDIT)
{
m_hbrDlg=CreateSolidBrush(RGB(0,0,0));
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(6,150,255));
return m_hbrDlg;

}
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

// TODO: Return a different brush if the default is not desired
return hbr;
}
georgehuang 2001-12-05
  • 打赏
  • 举报
回复
还没有人回答我的问题呢
清泉ys 2001-12-05
  • 打赏
  • 举报
回复
啸傲兄弟,在VC技术内幕119页有介绍
但是按钮不能用此方法要重载
georgehuang 2001-12-05
  • 打赏
  • 举报
回复
TO alfwolf(戈壁孤狼)
还是不行的,我试了一下,对话框一弹出来的时候EDIT的颜色和它一样,我又不想用RichEdit。大侠能不能再指点我一下
alfwolf 2001-12-05
  • 打赏
  • 举报
回复
你的edit是不是在一个对话框?
可以这样:
HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
static HBRUSH m_hbrDlg=NULL;
if(m_hbrDlg==NULL)
m_hbrDlg= CreateSolidBrush(RGB(0,0,0));
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(6,150,255));

if (pWnd==GetDlgItem(IDC_MYEDIT))
{
pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(0,255,0));
}

return m_hbrDlg;
georgehuang 2001-12-05
  • 打赏
  • 举报
回复
为什么没有人理我呢
georgehuang 2001-12-05
  • 打赏
  • 举报
回复
To ylxqp() 
我试了一下你的方法,重载了一个Edit类,调用了OnCtlColor函数,但是还是实现不了
xiaoao 2001-12-04
  • 打赏
  • 举报
回复
ylxqp()兄,CEdit没有CtlColor这个成员函数。
xiaoao 2001-12-04
  • 打赏
  • 举报
回复
UPUP马上加分
OnDraw 2001-12-03
  • 打赏
  • 举报
回复
子类化处理
ylxqp 2001-12-03
  • 打赏
  • 举报
回复
HBRUSH CEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
m_bkcol=RGB(3,51,100);
m_fntcol=RGB(252,252,252);
m_brush.CreateSolidBrush(m_bkcol);
pDC->SetBkColor(m_bkcol);
pDC->SetTextColor(m_fntcol);
return (HBRUSH) m_brush;
}
xiaoao 2001-12-03
  • 打赏
  • 举报
回复
能不能解释一下,有些不明白。

16,551

社区成员

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

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

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