我在一个对话框中重载了OnEraseBkgnd(CDC* pDC)函数,具体代码如下:BOOL CGiftDlg::OnEraseBkgnd(CDC* pDC)
{
HBITMAP bitmap,pold;
bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"xx.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
ASSERT(bitmap);
CDC MemDC;
BITMAP bm;
GetObject(bitmap, sizeof(BITMAP), (LPBYTE)&bm);
CRect rc,rcbt;
GetClientRect(&rc);
CSize bmsize(bm.bmWidth,bm.bmHeight);
MemDC.CreateCompatibleDC(pDC);
pold=(HBITMAP)MemDC.SelectObject(bitmap);
rcbt.left=rc.left+(rc.Width()-bmsize.cx)/2;
rcbt.right=rcbt.left+bmsize.cx;
rcbt.top=rc.top+(rc.Height()-bmsize.cy)/2;
rcbt.bottom=rcbt.top+bmsize.cy;
pDC->StretchBlt(rcbt.left,rcbt.top,rcbt.Width(),rcbt.Height(),&MemDC,0,0,bmsize.cx,bmsize.cy,SRCCOPY);
MemDC.SelectObject(pold);
MemDC.DeleteDC();
return TRUE;
}
问题是弹出窗口的时候位图显示不完全,右边少一部分.最大话窗口没问题,但返回初始大小的时候位图不会在适应窗口大小.请教高手什么问题啊??
{
HBITMAP bitmap,pold;
bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"xx.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
ASSERT(bitmap);
CDC MemDC;
BITMAP bm;
GetObject(bitmap, sizeof(BITMAP), (LPBYTE)&bm);
CRect rc,rcbt;
GetClientRect(&rc);
CSize bmsize(bm.bmWidth,bm.bmHeight);
MemDC.CreateCompatibleDC(pDC);
pold=(HBITMAP)MemDC.SelectObject(bitmap);
rcbt.left=rc.left+(rc.Width()-bmsize.cx)/2;
rcbt.right=rcbt.left+bmsize.cx;
rcbt.top=rc.top+(rc.Height()-bmsize.cy)/2;
rcbt.bottom=rcbt.top+bmsize.cy;
pDC->StretchBlt(rcbt.left,rcbt.top,rcbt.Width(),rcbt.Height(),&MemDC,0,0,bmsize.cx,bmsize.cy,SRCCOPY);
MemDC.SelectObject(pold);
MemDC.DeleteDC();
return TRUE;
}
问题是弹出窗口的时候位图显示不完全,右边少一部分.最大话窗口没问题,但返回初始大小的时候位图不会在适应窗口大小.请教高手什么问题啊??
解决方案 »
- 为什么release版本的程序比debug版本的程序节省资源
- 关于NUMBER类型查询的问题
- VC++6.0 和Visual Studio的区别?
- 终于升到五级了,散分500庆祝一下,顺祝大家圣诞快乐!(之一)
- 请问,BSTR类型的数据在调试时显示的值为1409,通过转换为char *后显示值为63?
- 用vc写的程序生成的exe文件只有在装有vc的机子上才能运行?
- 怎样才能使打开文件对话框可以选择jpg和bmp两种格式
- 我的源代码还有一些程序文件被误格了?如何恢复啊?
- ^^^^^^%%%$$$$$$$$$----最最简单的问题,可是我不清楚。。。 请多多指教!
- 如何象IE那样,在忙的时候把Mouse指针改成箭头+沙漏,(注意:不是一个大沙漏)
- 客户端对话框关闭时,线程的退出问题!
- VC---有关软件版本的问题?
{
//设置透明背景模式
pDC->SetBkMode(TRANSPARENT);
//设置背景刷子为空
return (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
}