编辑控件边框和WM_CTLCOLOREDIT?

Posted

技术标签:

【中文标题】编辑控件边框和WM_CTLCOLOREDIT?【英文标题】:Edit control border and WM_CTLCOLOREDIT? 【发布时间】:2012-11-27 07:13:26 【问题描述】:

我尝试执行以下操作,但没有显示框架/边框。我尝试了 FrameRect 和 Rectangle。 任何想法,为什么这不起作用?

case WM_CTLCOLOREDIT: 
          
              HDC hdC = (HDC)wParam;

              SetTextColor( hdC, RGB(112,112,112) );

              SetBkMode( hdC, TRANSPARENT );

                RECT rect;
                GetClientRect( (HWND)lParam, &rect );                    
                HBRUSH hBrush = CreateSolidBrush( RGB(209,209,209) );
                   //FrameRect( hdC, &rect, hBrush );
                   Rectangle( hdC, (int)rect.left, (int)rect.top, (int)rect.right, (int)rect.bottom );
                DeleteObject( hBrush );

              LOGBRUSH lb;
              lb.lbStyle = BS_SOLID;
              lb.lbColor = RGB(249,249,249);
              lb.lbHatch = 0;
              return (LRESULT)CreateBrushIndirect(&lb);
          
          break;

【问题讨论】:

【参考方案1】:

好的,开始工作了。 上面代码的问题是当 WM_CTLCOLOREDIT 返回时,系统用返回的画笔绘制编辑控件,所以任何绘制都被清除了。 因此,不要返回使用 CreateBrushIndirect 创建的画笔,而是返回 NULL 画笔,方法是从 GetStockObject(NULL_BRUSH) 获取它。

Rectangle 函数绘制一个矩形。矩形使用当前笔勾勒出轮廓,并使用当前画笔填充。 这样就行了。

【讨论】:

以上是关于编辑控件边框和WM_CTLCOLOREDIT?的主要内容,如果未能解决你的问题,请参考以下文章

在 mfc 中绘制父对话框

Delphi 之 编辑框控件(TEdit)

编辑框等控件边框美化(继承CEdit,然后覆盖OnMouseLeave, OnSetFocus, OnPaint函数即可。原来的CEdit虽然代码不可见,但它也是有句柄的,照样随便画)

怎么给android 设置边框

控件基本属性

在 Blend 中删除 ListView 标题边框