请问我想在对话框中设其背景为一张图片.怎么办呀? 请问我想在对话框中设其背景为一张图片.怎么办呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在合适的地方加入以下代码就可以了,IDB_BKBMP1为你想加入的图片,要先在资源那里import其实加入背景处理起来比较麻烦,因为你要使控件和背景融为一体,我用的是skin觉得还好一点 CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BKBMP1); BITMAP bitMap; bmpBackground.GetBitmap(&bitMap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY); dc.SelectObject(pbmpOld); bmpBackground.DeleteObject(); 我觉得加入图片并不难// member variablesBITMAP m_bmif;HBITMAP m_hBitmap;CBrush m_brBk;// OnInitDialog:m_hBitmap = (HBITMAP) LoadImage(AfxGetInstanceHandle(), strPicPath, // 图片绝对路径,如D:\picture\test.bmp IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);ZeroMemory(&m_bmif,sizeof(BITMAP));::GetObject(m_hBitmap, sizeof(BITMAP), &m_bmif) ;m_brBk.CreatePatternBrush(CBitmap::FromHandle(m_hBitmap));CenterWindow(); // 将对话框放到屏幕中央GetClientRect(&rect); // 取对话框的区域rect.right = rect.left + m_bmif.bmWidth;// 使得对话框和背景图片一样大rect.bottom = rect.top + m_bmif.bmHeight;// 使得对话框和背景图片一样大MoveWindow(&rect); // 使得对话框和背景图片一样大// end Init Dialog重载OnCtlColor函数,直接返回m_brBk;:return m_brBK;重载PostNcDestroy函数,释放资源: m_brBk.DeleteObject();::DeleteObject(m_hBitmap); 有点伤感 小散一下 求一个vc延时的代码 用ADO中的ID.什么类来列举数据库表时会把系统表也列出来,怎样不要这些表,只列我建的表呢? 建立一个单文档的工程,希望能够将本地的一张图片显示在view上做背景图,如何实现(急) 【求助】ATL生成com时合并外部dll 如何得知系统的分区数目和每个分区的盘符 如何进行网络密码验证? 关于vc++编程连接sql server数据库问题! 各位大侠,有关CTabCtrl的问题 运动控制的一些问题! 有关数据库!达人请入 请教: send 命令 为什么不能在2K 与98 系统之间传输消息
其实加入背景处理起来比较麻烦,因为你要使控件和背景融为一体,我用的是skin觉得还好一点
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BKBMP1);
BITMAP bitMap;
bmpBackground.GetBitmap(&bitMap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
dc.SelectObject(pbmpOld);
bmpBackground.DeleteObject();
// member variables
BITMAP m_bmif;
HBITMAP m_hBitmap;
CBrush m_brBk;// OnInitDialog:
m_hBitmap = (HBITMAP) LoadImage(AfxGetInstanceHandle(),
strPicPath, // 图片绝对路径,如D:\picture\test.bmp
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);ZeroMemory(&m_bmif,sizeof(BITMAP));
::GetObject(m_hBitmap, sizeof(BITMAP), &m_bmif) ;
m_brBk.CreatePatternBrush(CBitmap::FromHandle(m_hBitmap));
CenterWindow(); // 将对话框放到屏幕中央
GetClientRect(&rect); // 取对话框的区域
rect.right = rect.left + m_bmif.bmWidth;// 使得对话框和背景图片一样大
rect.bottom = rect.top + m_bmif.bmHeight;// 使得对话框和背景图片一样大
MoveWindow(&rect); // 使得对话框和背景图片一样大
// end Init Dialog重载OnCtlColor函数,直接返回m_brBk;:return m_brBK;
重载PostNcDestroy函数,释放资源:
m_brBk.DeleteObject();::DeleteObject(m_hBitmap);