如何改变单文档程序的框架的背景色

qichuanxin 2003-08-22 03:21:10
我写了一个单文档程序,重载了CMainFrame的OnEraseBkgnd方法
BOOL CMainFrame::OnEraseBkgnd(CDC* pDC)
{
CBrush backBrush(RGB(206, 206, 206));
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;
}
但是框架的背景色没有变化,谁知道是为什么,如何修改才能实现?
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qichuanxin 2003-08-29
  • 打赏
  • 举报
回复
这个函数SetClassLong写在哪?第一个和第三个参数如何取得?
qichuanxin 2003-08-25
  • 打赏
  • 举报
回复
谁来回答一下
BSRONG 2003-08-25
  • 打赏
  • 举报
回复
SetClassLong(hwnd,GCL_HBRBACKGROUND,(long)hBrush);
it's ok
lygfqy 2003-08-25
  • 打赏
  • 举报
回复
SetClassLong(hwnd,GCL_HBRBACKGROUND,(long)hBrush);
qichuanxin 2003-08-22
  • 打赏
  • 举报
回复
那要如何做,才能不被拦截
fyfsoft 2003-08-22
  • 打赏
  • 举报
回复
正因为你在 view 中重载OnEraseBkgnd(CDC* pDC),
所以,由于doucment/view 对消系传递的一般性,由CFrameWnd
发出的消息先哟流经View->doc->docTemp->Frame->app
所以你搞的被拦截了。
qichuanxin 2003-08-22
  • 打赏
  • 举报
回复
我的工程中只有一个CChildView类,我已经重载了它的OnEraseBkgnd(CDC* pDC)方法,可没有用
思危 2003-08-22
  • 打赏
  • 举报
回复
这是因为框架的背景被视图遮住了,所以看不到。

你可以过载视图的
BOOL CMyView::OnEraseBkgnd(CDC* pDC)
{
CBrush backBrush(RGB(206, 206, 206));
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;
}
qichuanxin 2003-08-22
  • 打赏
  • 举报
回复
自己UP

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧