编辑控件边框和WM_CTLCOLOREDIT?

时间:2012-11-27 07:13:26

标签: c++ winapi user-interface

我尝试过以下操作,但框架/边框没有显示出来。我尝试了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 个答案:

答案 0 :(得分:0)

好的,让它运转起来。 上面代码的问题是当WM_CTLCOLOREDIT返回系统使用返回的画笔绘制编辑控件时,所以任何完成的绘画都将被删除。 因此,不是返回使用CreateBrushIndirect创建的画笔,而是通过从GetStockObject(NULL_BRUSH)获取它来返回NULL画笔。

Rectangle函数绘制一个矩形。通过使用当前笔并使用当前笔刷填充矩形。 这样才有用。