如何修改CEditView的背景颜色???
尤其是在SetReadOnly(TRUE)的时候。
谢谢!
问题点数:30、回复次数:12Top
1 楼Brierbird(荆棘鸟)回复于 2001-02-18 01:17:00 得分 0
再问。。。。。Top
2 楼songshi()回复于 2001-02-18 01:27:00 得分 0
在其派生类中重载OnDraw.
在其中用画刷刷背景。eg:
...
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,0));
CBrush* pOldBrush = pDC->SelectObject(&brush);
CRect rect;
GetClientRect(&rect);
pDC->FillRect(rect,&brush);
pDC->SelectObject(pOldBrush);
....
Top
3 楼Brierbird(荆棘鸟)回复于 2001-02-18 12:47:00 得分 0
不行呀,如果是CView的派生类,那还可以。可是对CEditView不管用的:(((((
Top
4 楼111222(www.111222.cn)回复于 2001-02-18 13:09:00 得分 0
强烈关注!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Top
5 楼In355Hz(好象一条狗)回复于 2001-02-18 13:34:00 得分 0
用SetClassLong把CEditView的背景刷设为NULL,
再重载类的WM_ERASEBKGND消息重画背景试一试。Top
6 楼Brierbird(荆棘鸟)回复于 2001-02-18 14:05:00 得分 0
To In355Hz,
我在CXXXView::OnInitialUpdate()中用了
SetClassLong(this->GetSafeHwnd(), GCL_HBRBACKGROUND, NULL);
之后响应
CXXXView::OnEraseBkgnd(CDC* pDC) 中
pDC->SetBkColor(RGB(255, 255, 0));
可是,依然没有得到所要的效果
各位大侠有何高见,谢谢!
Top
7 楼Brierbird(荆棘鸟)回复于 2001-02-18 18:35:00 得分 0
To In355Hz,
我在CXXXView::OnInitialUpdate()中用了
SetClassLong(this->GetSafeHwnd(), GCL_HBRBACKGROUND, NULL);
之后响应
CXXXView::OnEraseBkgnd(CDC* pDC) 中
pDC->SetBkColor(RGB(255, 255, 0));
可是,依然没有得到所要的效果
各位大侠有何高见,谢谢!Top
8 楼songshi()回复于 2001-02-19 02:46:00 得分 30
Brierbird兄,先不要撅嘴,先前是我不好,搞错了.这次告诉你一个绝对可靠的办法!!!(不过你可一定要给我分啊 ^_^)
(1) 在你的CXXXView类中添加一个画刷成员变量如m_brushBkgnd.
(2) 在CXXXView构造函数中Create the Brush:
m_brushBkgnd.CreateSolidBrush(RGB(R,G,B));
(3) 用ClassWizard在CXXXView中添加"=WM_CTLCOLOR"的消息响应函数CXXXView::CtlColor(...)
{
Top
9 楼songshi()回复于 2001-02-19 02:52:00 得分 0
(sorry.接上段)
pDC->SetBkColor(RGB(R',G',B'));//这一句是花絮,效果非常有趣(和BRUSH不同色)
return m_brushBkgnd;
}
然后编译运行......你会看到......
思路:前面所有的错误解答对CVIEW有效,但其效果被CEDITVIEW中的EDIT控件盖住了.(请注意
CEditView::GetEditCtrl()方法)
既然CEditView中有CEdit控件,修改其背景颜色应该不是难事。
其它详细情况请参见MSDN之MFC TECH NOTE:TN062.....(分儿来)
Top
10 楼111222(www.111222.cn)回复于 2001-02-19 03:58:00 得分 0
快给分吧!我看到效果了!Top
11 楼songshi()回复于 2001-02-19 09:42:00 得分 0
谢谢111222,3:58:00还在线小弟佩服Top
12 楼Brierbird(荆棘鸟)回复于 2001-02-19 10:21:00 得分 0
呵呵,谢谢!!!Top




