vc中如何改变edit的背景色?
vc中如何改变edit的背景色?
楼主yessong(夜菘)2002-05-14 14:50:26 在 VC/MFC / 基础类 提问谢谢! 问题点数:20、回复次数:17Top
1 楼yessong(夜菘)回复于 2002-05-14 14:56:28 得分 0
怎么没人答啊?
Top
2 楼Frank_Xu()回复于 2002-05-14 14:58:00 得分 5
重載WM_CTLCOLOR
HBRUSH CxxxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
//HWND hWnd=pWnd->GetSafeHwnd ();
//if (hWnd ==控件變量.GetSafeHwnd ())
if(pWnd==&控件變量)
{
pDC->SetBkColor(RGB(0,255,0));
//pDC->SetTextColor (RGB(255,0,0));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}Top
3 楼itclockcn(司空飞雪)回复于 2002-05-14 15:10:26 得分 5
HBRUSH CRegdemoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor==CTLCOLOR_EDIT )
{
pDC->SetBkColor(RGB(100,110,100));
pDC->SetTextColor(RGB(200,120,0,));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}Top
4 楼yessong(夜菘)回复于 2002-05-14 15:12:47 得分 0
if(pWnd==&控件變量)
似乎有点问题。
控件变量指ID还是m_xxx呢?Top
5 楼yessong(夜菘)回复于 2002-05-14 15:24:14 得分 0
第2个解答也有问题,CTLCOLOR_EDIT是什么?
界面上有很多edit box,根据每个edit的什么标志能确定
修改的是它的颜色呢?Top
6 楼richmain(Text1.cpp)回复于 2002-05-14 15:26:04 得分 0
应该是pWnd ->m_hWnd == m_xxx.m_hWndTop
7 楼yessong(夜菘)回复于 2002-05-14 15:32:59 得分 0
m_xxx没有m_hWndTop
8 楼yessong(夜菘)回复于 2002-05-14 15:49:27 得分 0
还是不能解决。谁来帮忙,立马解贴。Top
9 楼yessong(夜菘)回复于 2002-05-15 09:38:37 得分 0
今天有人答吗?问题解决马上解贴。
Top
10 楼Miao__Miao(妙妙)回复于 2002-05-15 11:53:50 得分 0
upTop
11 楼feng_sky(日三而省.)回复于 2002-05-15 12:10:49 得分 5
**************************
下面也是根据一个网友提供的方法而作的!
********************************
class MyEdit1 : public CEdit
{
// Construction
public:
MyEdit1();
CBrush m_brBkGround;
COLORREF m_crBkColor;
COLORREF m_crTextColor;
// Attributes
public:
.....
MyEdit1::MyEdit1()
{
m_crTextColor = RGB(0,0,0);
//::GetSysColor( COLOR_WINDOWTEXT );
m_crBkColor = RGB(188,188,188);
m_brBkGround.CreateSolidBrush( RGB(188,188,188) );
}
......
MyEdit1 myedit1;
..............
myedit.Create(ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_LEFT|WS_VISIBLE,
CRect(10,130,400,155),this,IDC_EDIT1);
myedit.ModifyStyleEx(0,WS_EX_CLIENTEDGE, SWP_DRAWFRAME);
......
myedit.m_crTextColor = RGB(0,100,0);
.....
Top
12 楼Frank_Xu()回复于 2002-05-15 14:08:59 得分 0
if(pWnd==&控件變量)
似乎有点问题。
控件变量指ID还是m_xxx呢?
你用ClassWizard定義一個CEdit ID 的變量,如CEidt m_edit_test;
指m_xxx,不是ID.Top
13 楼cwsuperman(cwsuperman)回复于 2002-05-15 14:13:12 得分 0
sb,pWnd怎么可能是ID呢,哈哈。Top
14 楼yessong(夜菘)回复于 2002-05-15 15:43:27 得分 0
是不是我没说清楚呢?
我在对话框加入了controls中的edit box组件,图标是ab|
普通情况下为白底黑字。
将它改成只读后变成灰底黑字,字不太明显,于是我想将灰底
的颜色改掉。
这就是我的问题,现在有人能帮我解决了吗?Top
15 楼drummer()回复于 2002-05-15 16:01:15 得分 0
HBRUSH CMainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (nCtlColor==CTLCOLOR_EDIT)
{
pDC->SetBkColor(RGB(255,100,192));
return hbr;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}Top
16 楼eastrock(东方之石)回复于 2002-05-15 16:16:16 得分 5
重載WM_CTLCOLOR,msdn上有example
再不然的话,可以自己写一个以CEdit为基类的类,但这样子会比较麻烦就是。如果你只是要设置背景的话,那没有必要自己写一个类Top
17 楼eaglerock(小小菜鸟)回复于 2002-05-15 17:45:48 得分 0
换对话框的颜色,再把edit框的背景模式设为透明就好多了。我就是这样做的Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
