博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vs2010 单文档MFC 通过加载位图文件作为客户区背景
阅读量:4544 次
发布时间:2019-06-08

本文共 1301 字,大约阅读时间需要 4 分钟。

实现效果:

这里写图片描述

这个其实是一个非常常见的功能,大家都会考虑给自己简单的工程做一个背景界面。其实只要在view类中重载OnEraseBkgnd()这个函数就好了。

代码如下:

BOOL CdddView::OnEraseBkgnd(CDC* pDC){    // TODO: 在此添加消息处理程序代码和/或调用默认值    CString string("b.bmp");     HBITMAP hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),string,         IMAGE_BITMAP,1024,768, LR_CREATEDIBSECTION|LR_LOADFROMFILE);     //VERY IMPORTANT:NOT CALL THE SUPER CLASS FUNCTION     CPaintDC dc(this);     if(hbitmap==NULL)         return FALSE;     CBitmap bitmap;     bitmap.Attach(hbitmap);     BITMAP bmp;     bitmap.GetBitmap(&bmp);     CDC memDc;    memDc.CreateCompatibleDC(pDC);    CBitmap* pOldBitmap = memDc.SelectObject(&bitmap);    CRect rect;    GetClientRect(&rect);    pDC->SetStretchBltMode(COLORONCOLOR);//这个模式不设置的话会导致图片严重失真    pDC->StretchBlt(0,0,rect.Width() ,rect.Height(),        &memDc,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);    memDc.SelectObject(pOldBitmap);    memDc.DeleteDC();                                      //删除DC    return TRUE; }

顺便给工程换个标题栏:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){    if( !CFrameWndEx::PreCreateWindow(cs) )        return FALSE;    // TODO: 在此处通过修改    //  CREATESTRUCT cs 来修改窗口类或样式    cs.style &=~FWS_ADDTOTITLE;    cs.lpszName = _T("XXX系统");    return TRUE;}

加载位图时候有的格式可能还有点问题,下面是讨论贴:

转载于:https://www.cnblogs.com/wuyida/p/6301345.html

你可能感兴趣的文章
Android视频播放之VideoView
查看>>
非对称加密
查看>>
位运算巧用
查看>>
display:flex布局
查看>>
利用反射跟自定义注解拼接实体对象的查询SQL
查看>>
JQuery Ajax Options
查看>>
整体二分专题
查看>>
Python执行Linux系统命令的4种方法
查看>>
09 mongoDB基础(进阶)
查看>>
Xenomai PC开发环境
查看>>
spring-c3p0-01
查看>>
浏览器
查看>>
E20170624-ts
查看>>
linux shell实现随机数多种方法(date,random,uuid)
查看>>
页面上有tab,如何点击加载更多?
查看>>
bash shell笔记1 脚本基础知识
查看>>
html dl dt dd标签元素语法结构与使用
查看>>
OC单元测试框架-----Google开源单元测试框架Google Test(gtest)
查看>>
QLineEdit IP地址校验
查看>>
Using Bing Search Service over SOAP Protocol in an ASP.NET Web Application
查看>>