读书人

怎样添加MFC的背景图片?该怎么解决

发布时间: 2012-01-21 21:31:43 作者: rapoo

怎样添加MFC的背景图片??
我只会MFC的插入bmp的图片,可是想要插入一张背景图片使界面变得更加美观。。。有木有那位大侠知道代码。。。。。。。。感谢拉!!!

[解决办法]
使用CDC,然后在对话框上绘制就可以了,你百度一下,很多源码的。
[解决办法]

C/C++ code
LoadImage(CString pathName,CDC* pDC){IStream* pStream;    IPicture* pPicture;    CFile file;    if(!file.Open(pathName,CFile::modeRead))        return;    DWORD m_nFileLen;    m_nFileLen=file.GetLength();    HGLOBAL hMem=::GlobalAlloc(GMEM_MOVEABLE,m_nFileLen);    LPVOID lpBuf=::GlobalLock(hMem);    if(file.ReadHuge(lpBuf,m_nFileLen)!=m_nFileLen)        return;        file.Close();    ::GlobalUnlock( hMem );    if(CreateStreamOnHGlobal(hMem,TRUE,&pStream)!=S_OK)        return;    if(OleLoadPicture(pStream,m_nFileLen,TRUE,IID_IPicture,(LPVOID*)&pPicture)!=S_OK)        return;        long nWidth,nHeight;     pPicture->get_Width( &nWidth );     pPicture->get_Height( &nHeight );        CSize sz( nWidth, nHeight );    pDC->HIMETRICtoDP( &sz );    pPicture->Render(pDC->m_hDC,0,0,sz.cx,sz.cy,0,nHeight,nWidth,-nHeight,NULL);    pPicture->Release();    pStream->Release();}
[解决办法]
C/C++ code
CDC *pDC = new CDC;CRect rectbk; // 客户区的大小CDC dcMen; // 内存设备描述表CBitmap bmbk; // 位图对象bmbk.LoadBitmap(IDB_BITMAP_BACKGROUD); // 从资源加载位图 bitmapBITMAP stBitmap;bmbk.GetObject(sizeof(BITMAP),&stBitmap); // 得到位图bitmap的大小CSize bmsize(stBitmap.bmWidth,stBitmap.bmHeight);dcMen.CreateCompatibleDC(pDC); // 创建兼容的设备描述表CBitmap *pold=dcMen.SelectObject(&bmbk); // 选入新的位图对象并保存旧的位图对象GetClientRect(&rectbk);// 取得客户区的大小pDC->StretchBlt(rectbk.left,rectbk.top,rectbk.Width(),   rectbk.Height(),&dcMen,0,0,bmsize.cx,bmsize.cy,SRCCOPY);//从内存向屏幕复制位图对象dcMen.SelectObject(pold);// 恢复旧的位图对象dcMen.DeleteDC();// 释放内存设备描述表delete pDC; 

读书人网 >VC/MFC

热点推荐