免费预览已结束,剩余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年广西国际商务职业技术学院高职单招职业适应性测试参考题库有答案解析
- 2026年广东茂名幼儿师范专科学校高职单招职业适应性考试备考题库有答案解析
- 医院呼吸科诊疗服务礼仪
- 2026年保定理工学院单招综合素质笔试模拟试题带答案解析
- 2026年哈尔滨电力职业技术学院单招综合素质考试备考试题带答案解析
- 2026年河南信息统计职业学院高职单招职业适应性考试参考题库带答案解析
- 心脏病诊断与治疗新进展
- 三年级上劳动试卷及答案
- 2025年中国不干胶标签项目投资可行性研究报告
- 北京市西城区2024-2025学年七年级上学期期末考试数学试题【含答案】
- (一模)新疆维吾尔自治区2025年普通高考第一次适应性检测 英语试卷(含答案)
- 磷化基础知识
- 《结直肠癌教学》课件
- 三兄弟分田地宅基地协议书范文
- 地磅施工合同协议书
- 华莱士加盟合同范本
- LYT 2085-2013 森林火灾损失评估技术规范
- 材料样品确认单
评论
0/150
提交评论