能否把具有只读属性的Edit控件的背景色改掉?
我试过OnCtrlColor中设背景刷的颜色,设文本的背景色,设文本的背景模式都不起作用。
我试过OnCtrlColor中设背景刷的颜色,设文本的背景色,设文本的背景模式都不起作用。
解决方案 »
- ActiveX控件包含另一个ActiveX控件时的事件处理问题
- 挂接API WriteFile,可以检测到文本文件的改变,那怎么检测到图片的改变呢?
- 为一个已运行的程序加入局部键盘钩子时,如何得到程序的INSTANCE
- 【五一快乐】散分,祝大家五一玩得愉快~
- 菜鸟问题: 如何使用 OCX 控件?
- 关于换肤问题???
- 有谁有好用的发邮件的类(非MFC的)
- 各位大侠帮帮忙,关于STL、IGES文件的存储格式的问题?
- 怎么样改变我自己控件的大小???
- 如何调试带输入参数的Win32 Console Application?
- ADO删除纪录的问题
- 繪圖的代碼應該放在哪裡? OnPaint? OnErasbkgnd? 還是自己的函數裡?
overrider CEdit::OnCtrlColor
我用的是CEditView,应该已经被subclass了;我在CEditView::OnCtrlColor
中试过前面说的方法,都不行。
郁闷中
{
// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkColor(RGB(255,0,0));
return redbrush;
}
// TODO: Return a different brush if the default is not desired
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}注意读属性的Edit控件的性质和Static是一样的,所以是
CTLCOLOR_STATIC
而不是CTLCOLOR_BTN
没看到是在CEditView
即在OnEraseBkgnd(CDC *pDC)中加入
{
.....
CRect rect;
pDC->GetClipBox( &rect );
CBrush brush( m_crBackColor );
CBrush* pOldBrush = pDC->SelectObject( &brush );
pDC->PatBlt(rect.left, rect.top,rect.Width(), rect.Height ( ),PATCOPY );
pDC->SelectObject( pOldBrush );
.....
}
BEGIN_MESSAGE_MAP(CServerView, CEditView)
ON_WM_CTLCOLOR_REFLECT()
END_MESSAGE_MAP()
....HBRUSH CServerView::CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/)
{
return (HBRUSH)GetStockObject(WHITE_BRUSH);
}