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 で作成したブラシを返す代わりに、GetStockObject(NULL_BRUSH) から取得して NULL ブラシを返します。

Rectangle 関数は長方形を描画します。四角形は、現在のペンを使用して輪郭が描かれ、現在のブラシを使用して塗りつぶされます。それでうまくいきます。

于 2012-11-27T07:44:55.647 に答える