2012-11-27 49 views
0

我試着做下面的事情,但框架/邊框沒有顯示出來。我嘗試了FrameRect和Rectangle。 任何想法,爲什麼這不工作?編輯控制邊框和WM_CTLCOLOREDIT?

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; 

回答

0

好吧,讓它工作。 上述代碼的問題是當WM_CTLCOLOREDIT返回系統用返回的筆刷繪製編輯控件時,所以任何完成的繪畫都將被清除。 因此,不要返回使用CreateBrushIndirect創建的畫筆,而是通過從GetStockObject(NULL_BRUSH)中獲取它來返回NULL畫筆。

矩形函數繪製一個矩形。通過使用當前筆畫出矩形並使用當前畫筆進行填充。 這樣的作品。