请问如何改变readonly 属性 Edit控件的背景色?

kvw3000 2004-06-19 06:00:02
我是通过重载OnCtlColor()函数来实现的,但是如果该edit控件属性被设置为readonly,则无效,请问如何解决?谢谢
还有一个问题一并请教,我在用ListCtrl控件显示信息时,大概有30行左右,有滚动条,每隔1分钟我去刷新一次,就是先DeleteAllItems(),然后重新insert,但是刷新前总有一会儿这个控件不见了,然后才正常显示,如果不调用DeleteAllItems或者items少到不存在滚动条时就不会有这样的现象,请问各位大人如何解决?
...全文
805 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yajunmao 2004-07-12
  • 打赏
  • 举报
回复
mark
wangjia163 2004-06-20
  • 打赏
  • 举报
回复
第2个问题:
先SetRedraw(false)
在SetRedraw(true)

试试
wangjia163 2004-06-20
  • 打赏
  • 举报
回复
这里有一个例子
它的EDIT就是ReadOnly 并且是变色过的
http://hao.kjz.cn/Intro/server.rar
wangjia163 2004-06-20
  • 打赏
  • 举报
回复
有效啊~
我做过的~
也是设置READONLY

你再自己看看程序吧
kvw3000 2004-06-20
  • 打赏
  • 举报
回复
wangjia163(王嘉的马甲):
当edit控件的属性被设置为readonly时颜色设置无效!
wangjia163 2004-06-20
  • 打赏
  • 举报
回复
HBRUSH CChatView::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
{
HBRUSH m_hRedBrush;
HBRUSH m_hYellowBrush;
m_hYellowBrush =CreateSolidBrush(RGB(255,255,255));
switch(nCtlColor)
{
case CTLCOLOR_EDIT: //Edit 控件
pDC->SetBkColor(RGB(255, 0, 0));
return m_hRedBrush;

case CTLCOLOR_STATIC: //Static 控件
pDC->SetTextColor(RGB(255, 25, 0));
pDC->SetBkColor(RGB(255, 255, 0));
return m_hYellowBrush;
}
}
kvw3000 2004-06-20
  • 打赏
  • 举报
回复
谢谢 kongyunzhongque(云雀) ,已经解决。
结帖
kongyunzhongque 2004-06-20
  • 打赏
  • 举报
回复
zt

WM_CTLCOLORSTATIC
A static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the static control.
当编辑框为read_only 或disable时,在WM_CTLCOLOR中相当于CTLCOLOR_STATIC == nCtlColor
kvw3000 2004-06-20
  • 打赏
  • 举报
回复
不知道CEdit &ctlEdit = GetEditCtrl();
ctlEdit.SetReadOnly(true);中GetEditCtrl()函数是谁的事件?
我新建的对话框工程无此函数
我是采用这种方法获取edit控件的:
CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT)
pEdit->SetReadOnly(true);
不行啊

ps:第二个问题已经解决,谢谢
kvw3000 2004-06-19
  • 打赏
  • 举报
回复
liuwei59831(凌云),谢谢,用你的方法还是一样的效果阿。
liuwei59831 2004-06-19
  • 打赏
  • 举报
回复
不要在EDIT控件的属性中设置readonly,而是关联一个EDIT控件变量,
然后用SetReadOnly(TRUE)实现。
如: m_CtrlContext.SetReadOnly(TRUE);
最后在OnCtlColor()函数中实现颜色改变。
kvw3000 2004-06-19
  • 打赏
  • 举报
回复
nobody help me?

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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