一个很迷惑的问题,大家帮我看看!

秀小川 2012-03-21 04:58:49

OnPaint()
{

CDC memDC;
CDC *pDC;
pDC = GetDC();
CBitmap bitmap;
BITMAP map;
bitmap.LoadBitmap(IDB_BAK);
bitmap.GetBitmap(&map);
CSize size(map.bmWidth,map.bmHeight);
CRect rect;
rect = new CRect(0,0,size.cx,size.cy);
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bitmap);

pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
//pDC-> StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,size.cx,size.cy,SRCCOPY);
ReleaseDC(pDC);
DeleteDC(memDC);

CDialog::OnPaint();
}

通过这段代码我在对话框上面加了一幅背景图片,如下效果!

之后如果我切到别的窗口,然后将窗口从这个窗口上面拖开(注意:不是点这个窗口哦!),然后就成下面这样了!

我在那个背景上是放的按钮!
为什么会出现这种结果啊?
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
秀小川 2012-03-22
  • 打赏
  • 举报
回复
WM_Paint 消息不是已经在OnPaint里面处理了吗?
[Quote=引用 2 楼 ndy_w 的回复:]

pDC = GetDC();
这个不对的。处理wm_paint消息要用BeginPaint
[/Quote]
秀小川 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 s1nc0der 的回复:]

  重绘的问题 每次 接受到 WM_PAINT 消息的时候 都重绘下
[/Quote]
绘制的代码我是加到OnPaint里面的,应该是重绘了的吧!
shn521 2012-03-22
  • 打赏
  • 举报
回复
你这重绘的只是背景吧
佑勿勿 2012-03-22
  • 打赏
  • 举报
回复
蓝色背景上的二个ICON你是后来画上去的吧,窗体重绘的时候这二个ICON没有重绘,你查一查绘制ICON的代码放到哪了
ndy_w 2012-03-21
  • 打赏
  • 举报
回复
pDC = GetDC();
这个不对的。处理wm_paint消息要用BeginPaint
s1nc0der 2012-03-21
  • 打赏
  • 举报
回复
  重绘的问题 每次 接受到 WM_PAINT 消息的时候 都重绘下

15,979

社区成员

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

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