FillRect在某些情况下不起作用

时间:2015-01-11 15:28:08

标签: c++ c winapi user-interface window

在我的代码中:

void Surface::paintBorders(const Color& color, int borderWidth){
HBRUSH colorBrush = CreateSolidBrush(color.getRGB());
RECT border;

//Top Border:
border.top = 0;
border.bottom = borderWidth;
border.left = 0;
border.right = mRect.right - mRect.left;
FillRect(mHDC, &border, colorBrush);

//Bottom border
border.top = mRect.bottom - mRect.top - borderWidth;
border.bottom = mRect.bottom - mRect.top;
border.left = 0;
border.right = mRect.right - mRect.left;
FillRect(mHDC, &border, colorBrush);

//Right border
border.top = 0;
border.bottom = mRect.bottom - mRect.top;
border.left = mRect.right - mRect.left - borderWidth;
border.right = mRect.right - mRect.left;
FillRect(mHDC, &border, colorBrush);

//Left border
border.top = 0;
border.bottom = mRect.bottom - mRect.top;
border.left = 0;
border.right = borderWidth;
FillRect(mHDC, &border, colorBrush);

DeleteObject(colorBrush);

}

只有顶部和左边的边框被涂上,底部和右边都没有。 我引自MSDN:

  

此功能包括左边框和上边框,但不包括矩形的右边框和下边框。

我不知道它是否相关。 我确信所有的协调都没问题,还有HDC和HBRUSH参数。 任何想法?

1 个答案:

答案 0 :(得分:1)

好的伙计们,我得到了答案,显然由GetWindowRect检索了rect而不是GetClientRect,这搞乱了所有的协调