关于窗体背景问题

robter5611 2003-09-14 07:00:50
用一幅位图作的窗体背景,在最小化以后,或者是任意失去焦点的动作之后,再恢复。背景就变成白色了。这是为什么?用任意一种颜色做背景就不会有这种情况。我在WM_ACTIVATE消息中用SetClassLong重新设为位图背景仍然不行。
请问各位老大,这是为什么?怎样解决?
还有一个问题,怎样在窗体上“贴”一幅位图,就像HTML的<IMG>标签一样?
多谢。
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangcrony 2004-01-27
  • 打赏
  • 举报
回复
"在窗体上“贴”一幅位图,就像HTML的<IMG>标签一样?"
BOOL CXXXView::OnEraseBkgnd(CDC* pDC)
{
CDC MemDC;
CBitmap bmp;
CBitmap* pOldBMP;
CRect rect;

GetClientRect(&rect);
bmp.LoadBitmap(IDB_BMP_BACKGROUND);
MemDC.CreateCompatibleDC(pDC);
pOldBMP = MemDC.SelectObject(&bmp);
pDC->StretchBlt(0,0,rect.Width(),rect.Heigh(),&MemDC,0,0,67,65,SRCCOPY);
MemDC.SelectObject(pOldBMP);

return TRUE;
/////return CView::OnEraseBkgnd(pDC);
}
mct1025 2003-09-15
  • 打赏
  • 举报
回复
一个封装的类,用来设置窗体背景

http://www.codeproject.com/bitmap/picturewindow.asp?target=dialog
lygfqy 2003-09-15
  • 打赏
  • 举报
回复
在wm_paint
Bitblt();
icr_mio 2003-09-15
  • 打赏
  • 举报
回复
应该在WM_PAINT消息中处理
wuxfBrave 2003-09-15
  • 打赏
  • 举报
回复
重载WM_ERASEGKGND消息
zhumerchant 2003-09-15
  • 打赏
  • 举报
回复
重载WM_ERASEGKGND消息,重载函数这样写:

BOOL CXXXView::OnEraseBkgnd(CDC* pDC)
{
CDC MemDC;
CBitmap bmp;
CBitmap* pOldBMP;
CRect rect;

GetClientRect(&rect);
bmp.LoadBitmap(IDB_BMP_BACKGROUND);
MemDC.CreateCompatibleDC(pDC);
pOldBMP = MemDC.SelectObject(&bmp);
pDC->StretchBlt(0,
0,
rect.Width(),
rect.Height(),
&MemDC,
0,
0,
67, // BMP's width
65, // bmp's height
SRCCOPY);
MemDC.SelectObject(pOldBMP);

return TRUE;
// return CView::OnEraseBkgnd(pDC);
}

15,979

社区成员

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

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