免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在对话框中设置背景的三种方法方法一:在OnPaint中StretchBlt具体是:注释掉CDialog:OnPaint()或放到结尾(原因何在呢?),并加入贴图代码voidCqqqqqDlg:OnPaint()if(IsIconic()CPaintDCdc(this);/devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,reinterpret_cast(dc.GetSafeHdc(),0);/CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;/Drawtheicondc.DrawIcon(x,y,m_hIcon);else/CDialog:OnPaint();/注释此句,如果不注释的话,就放到结尾,原因何在呢?/贴背景图片CPaintDCdc(this);CBitmapbmpBk;bmpBk.LoadBitmapW(IDB_BITMAP_tempbk);/m_bmpBK.LoadBitmapW(IDB_BMPBK);BITMAPbmpSize;bmpBk.GetBitmap(&bmpSize);/获取背景图片尺寸CRectrect;GetClientRect(&rect);/获取客户区尺寸CDCdcMem;dcMem.CreateCompatibleDC(&dc);dcMem.SelectObject(&bmpBk);dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bmpSize.bmWidth,bmpSize.bmHeight,SRCCOPY);/将背景图片拉伸或者压缩copy至客户区/贴背景图片执行效果截图如下:方法二:在OnEraseBkgnd中StretchBlt具体是:注释掉return CDialog:OnEraseBkgnd(pDC);直接返回true(为什么不能返回这个要返回true呢?),代码如下:BOOLCqqqqqDlg:OnEraseBkgnd(CDC*pDC)/TODO:Addyourmessagehandlercodehereand/orcalldefault/贴背景图片CBitmapbmpBk;bmpBk.LoadBitmapW(IDB_BITMAP_tempbk);/m_bmpBK.LoadBitmapW(IDB_BMPBK);BITMAPbmpSize;bmpBk.GetBitmap(&bmpSize);/获取背景图片尺寸CRectrect;GetClientRect(&rect);/获取客户区尺寸CDCdcMem;dcMem.CreateCompatibleDC(pDC);dcMem.SelectObject(&bmpBk);pDC-StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bmpSize.bmWidth,bmpSize.bmHeight,SRCCOPY);/将背景图片拉伸或者压缩copy至客户区/贴背景图片returntrue;/returnCDialog:OnEraseBkgnd(pDC);效果与方法一相同,图片就不贴了,参见上图。而且这里还有一个很有意思的现象,若在OnEraseBkgnd贴图, 在OnPaint()函数中不调用基类的OnPaint,即注释掉CDialog:OnPaint(),则将界面隐藏后再显示出来则控件全没了,只有对话框以及背景。如下图:原因见在OnPaint中必须调用一次BeginPaint和EndPaint,且也只能调用一次。方法三:在OnCtlColor中返回带有背景位图的画刷具体是:1、在头文件中定一个背景刷public:CBrushm_brushBk;2、在OnInitDialog中加入以下句/TODO:AddextrainitializationhereCBitmapbmp;bmp.LoadBitmap(IDB_BITMAP_tempbk);m_brushBk.CreatePatternBrush(&bmp);/m_brushBk.CreateSolidBrush(RGB(0,255,0);/用纯色作为背景bmp.DeleteObject();3、在OnCtlColor函数中返回背景画刷HBRUSHCXXXXXDlg:OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)HBRUSHhbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);/TODO:ChangeanyattributesoftheDChere/TODO:Returnadifferentbrushifthedefaultisnotdesiredif(pWnd=this)/this代表当前对话框窗口returnm_brushBk;returnhbr;效果如下图所示:注意这个函数里面的if判断,这个pWnd参数很关键。澳门新濠天地官网66我们看看,如果没有这个if判断,直接返回m_brushBk;会是什么结果呢,代码如下:HBRUSHCqqqqqDlg:OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)HBRUSHhbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);/TODO:ChangeanyattributesoftheDChere/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江台州市温岭市繁昌学校招聘备考题库附答案详解(综合题)
- 2026辽宁铁岭市教育局校园招聘143人备考题库附答案详解(考试直接用)
- 2026华信光电科技(山东)有限公司招聘6人备考题库及答案详解1套
- 2026江苏南京中医药大学招聘体育教师备考题库(人事代理)附答案详解(夺分金卷)
- 2026广东清远市佛冈县妇联招聘佛冈县春风工作中心聘员6人备考题库含答案详解(培优a卷)
- 2026北京交通大学继续教育学院招聘2人备考题库含答案详解(能力提升)
- 2026《真空电子技术》青年编委招聘备考题库含答案详解(培优a卷)
- 2026广东阳江阳西县图书馆招聘见习生2人备考题库及答案详解(夺冠)
- 2026安徽芜湖市人才发展集团代招聘7人备考题库(三)含答案详解
- 2026春季江铜集团法务风控部校园招聘2人备考题库(第二批)完整答案详解
- 区块链金融(第二版)课件 项目五 区块链赋能保险业务
- 2024人教版八年级英语下册 Unit1 Time to Relax教案(共5课时)
- 药学人员考试题库及答案
- 2026届沧州市中考物理猜题卷(含答案解析)
- 广东湛江市2025-2026学年高二上学期期末调研考试英语试卷(含答案)
- 2026年特种设备作业人员考试题库及答案
- 公开选拔乡镇副科级领导干部笔试题库附答案
- 再生资源回收公司介绍
- 《2026年》高速收费员岗位高频面试题包含详细解答
- 北京中国医学科学院医学信息研究所2025年第二批招聘2人笔试历年参考题库附带答案详解
- 发酵乳制品中食品添加剂的使用与意义,食品安全论文
评论
0/150
提交评论