VC++ MFC 请问如何改变窗口的背景色?(50分)

  • 主题发起人 主题发起人 wlmmlw
  • 开始时间 开始时间
W

wlmmlw

Unregistered / Unconfirmed
GUEST, unregistred user!
用了::SetDCBrushColor好象没有什么用!!!!
请高手指点。
 
mdi ,sdi 还是 dialog???????
 
响应WM_CTLCOLORDLG消息即可
 
是CFrameWnd的派生类
请问::SetDCBrushColor是用来干什么的?
 
mdi ,sdi 还是 dialog?
 
Add Windows Message Handler,处理WM_ERASEBKND消息
BOOL CSDI_TESTView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
//设置brush为希望的背景颜色
CBrush backBrush(RGB(255, 128, 128));

//保存旧的brush
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect);

//画需要的区域
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
//return CView::OnEraseBkgnd(pDC);
//必须去掉
}
 
请问Delphi里TForm.Color是不是也是这样实现的?
 
he he,这段代码我也是抄的[:)],Delphi里不太清楚,原理应该一样吧。
 
有没有更简便的方法?
CFrameWnd把WNDCLASS的背景色定义为COLOR_WINDOW
是不是有办法直接改掉这个定义?
请指教!!!
 
问题是你是要改View的颜色,不是改CFrameWnd的颜色。
 
我不要CView
我只有一个CFrameWnd对象
它是白色的,我看了不大习惯,想把它改成COLOR_BTNFACE。
发现比较难做到。
请指教!!!!!
 
它肯定有CChildView类吧,在CChildView::OnPaint() 里改。
 
没有!
我是新手。
VC++ MFC只是对API做了简单的封装,自己并没有加入多少功能。
不知这种看法对不对?
请指教!!!!!!!
 
faint!
你的工程里有那些类?
 
一个CWndApp
一个CFrameWnd
 
你怎么把CChildView去掉的?
 
我是新手,要从最简单的做起。
CWndApp建立程序
CFrameWnd实现窗口
我还没学CView。
一个简单的颜色设置就把我难住了。我是想MFC能提供更好的方法。但是我找不到。

请指教!!!!!!!!
 
处理CFrameWnd的WM_ERASEBKND消息,和CView是类似的。
 
只此一条路??
请指教!!!!
::SetDCBrushColor是什么的干活???
 
后退
顶部