关于画刷的问题

采石工 2011-02-23 04:51:06
下面是一段OnPaint()中的代码,试问为什么画不出暗灰色的背景,而是画出白色的背景?
[code=C]/C++
CPaintDC dc(this);

CRect rect;
GetClientRect(&rect);

CBrush brush;
brush.FromHandle((HBRUSH)::GetStockObject(DKGRAY_BRUSH));
dc.FillRect(&rect,&brush);
[/code]
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨夜无风 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 quarryman 的回复:]
引用 4 楼 cheeralen 的回复:

在view的OnPaint()函数里加入一下代码

CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);

CBrush *brush,*pold;
brush= CBrush::FromHandle((H……
[/Quote]

其实brush.FromHandle((HBRUSH)::GetStockObject(DKGRAY_BRUSH)); 也相当于调用了CBrush::FromHandle,只是你没取到返回值。FromHandle本身是个静态函数,可以用对象来调用,但是并不会对对象除静态成员变量以外的成员操作,你应该取这个函数的返回值!
采石工 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cheeralen 的回复:]

在view的OnPaint()函数里加入一下代码

CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);

CBrush *brush,*pold;
brush= CBrush::FromHandle((HBRUSH)::GetStockObject(DKGRA……
[/Quote]
请问为什么brush.FromHandle((HBRUSH)::GetStockObject(DKGRAY_BRUSH)); 不行呢?
King_hhuang 2011-02-23
  • 打赏
  • 举报
回复
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect); //位图句柄
CBrush* brush = CBrush::FromHandle((HBRUSH)::GetStockObject(DKGRAY_BRUSH));
dc.SelectObject(brush);
dc.FillRect(&rect,brush);
暗黑帝国 2011-02-23
  • 打赏
  • 举报
回复
在view的OnPaint()函数里加入一下代码

CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);

CBrush *brush,*pold;
brush= CBrush::FromHandle((HBRUSH)::GetStockObject(DKGRAY_BRUSH));
pold = dc.SelectObject(brush);
dc.FillRect(&rect,brush);
dc.SelectObject(pold);
采石工 2011-02-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 king_hhuang 的回复:]

你没有选择这个画刷
SelectObject
[/Quote]
你好,我添加了你所提到的代码,可是还是不行啊
King_hhuang 2011-02-23
  • 打赏
  • 举报
回复
你没有选择这个画刷
SelectObject
qjgdftxmu 2011-02-23
  • 打赏
  • 举报
回复
因为根本就没有画,本来默认就是白的。。。

15,979

社区成员

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

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