MFC 对话框加背景片 怎样让对话框显示一张图片 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL CMyView::ShowBitmap(CString str){ CBitmap *bitmap;BITMAP pBmpInfo;HBITMAP bmp =(HBITMAP)::LoadImage(AfxGetInstanceHandle(),str,IMAGE_BITMAP,0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);if(bmp==NULL){MessageBox("LoadImage Error !");return FALSE;}bitmap=CBitmap::FromHandle(bmp);bitmap->GetBitmap(&pBmpInfo);CDC mem;CDC *pDC=GetDC();if(!mem.CreateCompatibleDC(pDC)){MessageBox("CreateCompatibleDC Error !");return FALSE;}if(! mem.SelectObject(bitmap)){MessageBox("SelectObject Error !");return FALSE;}CRect rect;GetClientRect(&rect);// int err = pDC->BitBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,SRCCOPY);// int err = pDC->StretchBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,rect.Width(),rect.Height(),SRCCOPY); int err = pDC->StretchBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,SRCCOPY); if(err==0){MessageBox("BitBlt Error !");return FALSE;}pDC->DeleteDC();mem.DeleteDC(); return TRUE;} OnPaint调用BitBlt、StretchBlt函数贴图 二楼,人家楼主是要在对话框上显示图片....CBitmap bmp;CDC memdc;memdc.CreateCompatibleDC(pDC);CBitmap* pOldBitmap = memdc.SelectObject(&bmp);bmp.LoadBitmap(IDB_BITMAP);memdc.SelectObject(&bmp);pDC->BitBlt(0,0,360,200,&memdc,0,0,SRCCOPY);memdc.SelectObject(pOldBitmap);bmp.DeleteObject();memDC.DeleteDC();以上代码应写在OnPaint函数中 将图片设置为背景。OnEraseBkgnd(CDC* pDC)重写 不会把整个对话框加一张图吧!void CVidiconSetTab::OnPaint(){ CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 CRect rect; GetClientRect(&rect); CBitmap bmp; bmp.LoadBitmap(IDB_ShowDlgBk); CBrush brush; brush.CreatePatternBrush(&bmp); CBrush *pOldbrush = dc.SelectObject(&brush); dc.Rectangle(0,0,rect.Width(),rect.Height()); dc.SelectObject(pOldbrush); // 不为绘图消息调用 CDialog::OnPaint()}也可以用下面这个方法;先定义一个CBrush brush;//在.h文件里 在初始化对话框中//加背景 CBitmap bmp; bmp.LoadBitmap(IDB_ShowDlgBk); brush.CreatePatternBrush(&bmp);把OnCtlColorruturn hbr;改为:return brush; 请教:如何将内存中的数据存为JPEG图像。。 关于清空字符数组~~不知怎么办~ 在DLL中动态创建第三方OCX控件失败 [难题]如何获得IE浏览器或IE控件中的所有图片链接? 新手问问题,大家帮一下 如何将"0x10"转换为16? vc初学者,一个运算符<<的重载,谢谢 求在Ado中使用带参数的command对象的使用例子代码,急 如何更改一个可执行文件的图标? 使用vector<>存储handle class失败 关于BCG界面库的问题 关于minidump和c++异常的问题
{
CBitmap *bitmap;
BITMAP pBmpInfo;
HBITMAP bmp =(HBITMAP)::LoadImage(AfxGetInstanceHandle(),str,IMAGE_BITMAP,0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);if(bmp==NULL)
{
MessageBox("LoadImage Error !");
return FALSE;
}bitmap=CBitmap::FromHandle(bmp);
bitmap->GetBitmap(&pBmpInfo);
CDC mem;
CDC *pDC=GetDC();
if(!mem.CreateCompatibleDC(pDC))
{
MessageBox("CreateCompatibleDC Error !");
return FALSE;
}if(! mem.SelectObject(bitmap))
{
MessageBox("SelectObject Error !");
return FALSE;
}
CRect rect;
GetClientRect(&rect);
// int err = pDC->BitBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,SRCCOPY);
// int err = pDC->StretchBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,rect.Width(),rect.Height(),SRCCOPY);
int err = pDC->StretchBlt(0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,&mem,0,0,pBmpInfo.bmWidth,pBmpInfo.bmHeight,SRCCOPY);
if(err==0)
{
MessageBox("BitBlt Error !");
return FALSE;
}
pDC->DeleteDC();
mem.DeleteDC();
return TRUE;
}
CDC memdc;
memdc.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = memdc.SelectObject(&bmp);
bmp.LoadBitmap(IDB_BITMAP);
memdc.SelectObject(&bmp);
pDC->BitBlt(0,0,360,200,&memdc,0,0,SRCCOPY);
memdc.SelectObject(pOldBitmap);
bmp.DeleteObject();
memDC.DeleteDC();
以上代码应写在OnPaint函数中
void CVidiconSetTab::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
CRect rect;
GetClientRect(&rect);
CBitmap bmp;
bmp.LoadBitmap(IDB_ShowDlgBk);
CBrush brush;
brush.CreatePatternBrush(&bmp);
CBrush *pOldbrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,rect.Width(),rect.Height());
dc.SelectObject(pOldbrush);
// 不为绘图消息调用 CDialog::OnPaint()
}也可以用下面这个方法;
先定义一个CBrush brush;//在.h文件里
在初始化对话框中
//加背景
CBitmap bmp;
bmp.LoadBitmap(IDB_ShowDlgBk);
brush.CreatePatternBrush(&bmp);
把OnCtlColor
ruturn hbr;改为:return brush;