如何改变mfc对话框程序,edit控件的背景颜色?

csdd1105 2011-06-29 07:49:25
如何改变mfc对话框程序,edit控件的背景颜色?

谢谢.
...全文
590 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
smilestone322 2011-06-29
  • 打赏
  • 举报
回复
右键点属性,应该可以吧
chainyu 2011-06-29
  • 打赏
  • 举报
回复
//利用WM_CTLCOLOR消息实现Edit   Control的文本与背景色的改变 
首先要明白:WM_CTLCOLOR是一个由控制(Control)发送给它父窗口的通知消息(Notification message)。

实现步骤:
生成一个标准的单文档应用程序框架,假设应用程序的名称为Color。我将利用它的About对话框做示范。在About dialog中添加两个Edit control,设定其ID为IDC_EDIT1与IDC_EDIT2。

第一种方法(对应于IDC_EDIT1): 按照标准的Windows编程,由其父窗口的消息处理函数负责处理WM_CTLCOLOR消息。

1. 在CAboutDlg中添加一个数据成员:HBRUSH m_brMine;
2. 利用向导映射AboutDlg的WM_CTLCOLOR消息,产生函数:HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
pDC是AboutDlg的设备上下文,pWnd是AboutDlg中发送该消息的control指针,nCtlColor市Control的类型编码。对其进行如下修改:

HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if ((pWnd-> GetDlgCtrlID() == IDC_EDIT1) && (nCtlColor == CTLCOLOR_EDIT))
{
COLORREF clr = RGB(255,0,0);
pDC-> SetTextColor(clr); //设置红色的文本
clr = RGB(0,0,0);
pDC-> SetBkColor(clr); //设置黑色的背景
m_brMine = ::CreateSolidBrush(clr);
return m_brMine; //作为约定,返回背景色对应的刷子句柄
}
else
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
}

第二种方法(对应于IDC_EDIT2):
利用MFC 4.0的新特性: Message reflection。

1.利用向导添加一个新的类:CColorEdit,基类为CEdit;
2.在CColorEdit中添加一个数据成员: HBRUSH m_bkBrush;
3.利用向导映射CColorEdit的 "=WM_CTLCOLOR "消息,产生函数:

HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor);

对其进行如下修改:

HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
COLORREF clr = RGB(0,0,0);
pDC-> SetTextColor(clr); //设置黑色的文本
clr = RGB(255,0,0);
pDC-> SetBkColor(clr); //设置红色的背景
m_bkBrush = ::CreateSolidBrush(clr);
return m_bkBrush; //作为约定,返回背景色对应的刷子句柄
}

4.利用向导为IDC_EDIT2生成一个数据成员CColorEdit m_coloredit;
5.在定义CAboutDlg的color.cpp文件中加入:#include "coloredit.h "
koala_kd 2011-06-29
  • 打赏
  • 举报
回复
WM_CTLCOLOR,这个可以,我用过
q1q2q3q4ln 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 visualeleven 的回复:]
WM_CTLCOLOR
[/Quote]
这个可以,GOOGLE以下
或你可以使用RICHEDIT
直接有函数可以用
专注成就梦想 2011-06-29
  • 打赏
  • 举报
回复
setbkcoler看看行吗?
Eleven 2011-06-29
  • 打赏
  • 举报
回复
WM_CTLCOLOR
simoreg 2011-06-29
  • 打赏
  • 举报
回复
CWinApp::SetDialogBkColor
快乐鹦鹉 2011-06-29
  • 打赏
  • 举报
回复
自绘 自绘
liuzheng85711 2011-06-29
  • 打赏
  • 举报
回复
扳倒树捉老鸹,通过改变桌面属性,将窗口的背景色直接改成想要的那种颜色。O(∩_∩)O~

16,473

社区成员

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

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

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