免费预览已结束,剩余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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年南宁客运从业资格证考试题目和答案图片
- 2024年三亚驾驶员客运从业资格证模拟考试题库
- 2024年延安办理客运从业资格证理论考试题
- 2024年从业资格证考客运
- 2024年济南汽车驾驶员客运资格证考试题及答案
- 智能教育机器人行业消费者群体特征分析
- 区块链医疗数据共享行业的消费心理分析
- 育婴员(五级)考试题库及答案
- 艺术品保险行业的消费心理分析
- 低碳汽车行业投资机会分析与策略研究报告
- 服务提升房地产企业核心竞争力新利器范本
- 第四章-环境分析与理性决策-管理学(马工程)共课件
- 三年级道德与法治上册 (我学习 我快乐)快乐学习课件
- 建设工程前期工作咨询费收费计算表
- 股票技术分析看盘操盘课件
- 全球卫生治理课件
- 第八讲 发展全过程人民民主PPT习概论2023优化版教学课件
- 大学生安全教育(综合篇)学习通课后章节答案期末考试题库2023年
- Scratch一阶1-海底世界
- 《义务教育英语课程标准(2022年版)》解读(小学) 2
- 2输变电工程施工质量验收统一表式(变电工程土建专业)
评论
0/150
提交评论