0

我尝试执行以下操作,但没有显示框架/边框。我尝试了 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;
4

1 回答 1

0

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

Rectangle 函数绘制一个矩形。矩形使用当前笔勾勒出轮廓,并使用当前画笔填充。所以这行得通。

于 2012-11-27T07:44:55.647 回答