文档详情

对话框设置背景图片.doc

发布:2017-08-17约2千字共3页下载文档
文本预览下载声明
对话框设置背景图片 CRect rect; GetClientRect(rect); CDC *pDC=GetDC(); //这句值得记忆,如何获取当前DC CDC memdc; memdc.CreateCompatibleDC(pDC); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP3); memdc.SelectObject(bitmap); pDC-BitBlt(0,0,rect.Width(),rect.Height(),memdc,0,0,SRCCOPY); 对于一般的空间及本功能对话框设置背景图片的中心思想大致是:获取本当前对话框坐标及句柄,然后创建图片对象,并加载控件,然后客户对话框选中图片对象并进行转换(最后一句)。 这些都是在OnPaint()下进行的。 Invalidate():立即重绘客户对话框(即立即刷新对话框),调用OnPaint()相关的消息映射。 路径显示图片 MFC界面加载图片大致有两个方法:通过BITMAP控件直接加载 和 通过路径动态加载图片。 通过BITMAP 加载图片很简单没有技术含量。在Resource页面下,添加Resource,然后导入图片(注意是BMP格式的,其他格式暂时没有研究),重命名等设置一下;接下来在对话框中添加picture control 控件,在type中选择bitmap,然后在image 中选择导入的加入的那个BITMAP就可以了。 通过路径加载图片相对复杂一点。picture control保持默认就可以。 CPaintDC dc(this); HBITMAP bmpHandle; bmpHandle = (HBITMAP)LoadImage(NULL,_T(图片路径),IMAGE_BITMAP,0,0,LOADFROMFILE); //路径要使用双CBitmap bmpPicture; CDC mdcPicture; CBitmap *bmpFromHandle = bmpPicture.FromHandle(bmpHandle); CRect rctPicture; GetDlgItem(picture控件)-GetWindowRect(rctPicture); //上面那一句很重要,GetDlgItem,获取相关控件 //关联相关控件,比如按钮控件 m_btn.SubclassDlgItem mdcPicture.CreateCompatibleDC(dc); CBitmap *bmpPrevious = mdcPicture.SelectObject(bmpFromHandle); ScreenToClient(rctPicture); dc.BitBlt(rctPicture.left,rctPicture.top,rctPicture.Width();rctPicture.Heigth(),mdcPicture,0,0,SRCCOPY); dc.SelectObject(bmpPrevious); 控件背景设置 加载ON_WM_CTLCOLOR消息映射,在相关的响应OmCltcolor响应函数中,添加以下代码可以修改相关控件的背景颜色等。 switch (nCtlColor) { case CTLCOLOR_EDIT: //这些是相关的控件名称 case CTLCOLOR_MSGBOX: case CTLCOLOR_DLG : case CTLCOLOR_STATIC : //在此加入你想要改变背景色的控件消息 pDC-SetBkMode(TRANSPARENT); HBRUSH B = CreateSolidBrush(RGB(120,182,74)); //COLOR是你想设置的颜色 return (HBRUSH) B; // default: //其他控件设置自己默认的颜色和背景刷. } 打开文件并获取文件地址 CFileDialog dlg(TRUE,_T(bmp),_T(.bmp),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T(位图文件(*.BMP)|*.BMP||)); dlg.DoModal(); CString m_strPath = dlg.GetPathName(); MessageBox(m_strPath); Invalidate();
显示全部
相似文档