回 帖 发 新 帖 刷新版面

主题:CEdit 控件闪烁的问题

我从CEdit派生了一个类,将其扩展样式设置为WS_EX_TRANSPARENT,在WM_EREASEBKGUN消息里重画了背景,现在的问题是在Edit里敲字符或者鼠标选取文字时,闪烁很厉害。有什么办法吗?我实在想不出什么办法,搞不请EDIT内部是怎么实现的。

回复列表 (共2个回复)

沙发

不知道呢~我也是刚学c++的---有没高手指点下

板凳

不知道你想干什么, 如果只是更改你的Edit控件的背景颜色,应该在你派生的Edit类里添加 WM_CTLCOLOR 消息, 其消息函数内容可以这么写:

  COLORREF cr1(RGB(255,0,0)); // 文本颜色
  COLORREF cr2(RGB(0,255,0)); // 背景颜色

  pDC->SetTextColor(cr1); //设置文本颜色
  pDC->SetBkColor(cr2);  //设置文本的背景颜色(即文本高度覆盖的区域)
  HBRUSH brush = CreateSolidBrush(cr2); //编辑框的背景颜色(文本高度未覆盖的区域)
  return brush;

我来回复

您尚未登录,请登录后再回复。点此登录或注册