CFrameWnd派生类中调用CDC::SetBkColor、CDC::SetDCBrushColor无效
新人请教:
SetBkColor函数返回值为0xFFFFFFFF,MSDN提示出错返回值为0x8000000. GetLastError返回0.
证明我SetBkColor调用应该是没有问题的。既然没有调用没有问题那么为什么背景色还是默认的呢?
搜索别人的帖子看到有说视图下的SetBkColor函数是无效的,真的吗?如果是真的,那么视图应该调用哪个function改变背景颜色呢?
SetBrushColor也无法改变任何颜色。
代码如下:
// .h
class CWindow :
public CFrameWnd
{
public:
CWindow(__in LPCTSTR pszWindowName);
~CWindow();
protected:
afx_msg virtual void OnPaint();
DECLARE_MESSAGE_MAP()
public:
};
//.cpp
CWindow::CWindow(__in LPCTSTR pszWindowName)
{
Create(NULL, pszWindowName);
}
CWindow::~CWindow()
{
}
BEGIN_MESSAGE_MAP(CWindow, CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CWindow::OnPaint()
{
CRect rect;
GetClientRect(&rect);
//CDC* dc = GetDC();
CClientDC dc(this);
dc.SetDCBrushColor(RGB(155,205,155));
dc.SetBkColor(RGB(155, 205, 155));
dc.MoveTo(rect.left, rect.top);
dc.LineTo(rect.right, rect.bottom);
dc.MoveTo(rect.right, rect.top);
dc.LineTo(rect.left, rect.bottom);
//ReleaseDC(dc);
}