专栏首页流川疯编写程序的艺术vs2010 单文档MFC 通过加载位图文件作为客户区背景

vs2010 单文档MFC 通过加载位图文件作为客户区背景

实现效果:

这个其实是一个非常常见的功能,大家都会考虑给自己简单的工程做一个背景界面。其实只要在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;
}

加载位图时候有的格式可能还有点问题,下面是讨论贴: http://bbs.csdn.net/topics/391027250?page=1#post-399164597

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • leetcode 14 Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of st...

    用户1539362
  • Win 10 下 android studio显示 Intel haxm无法安装,以及VT-X和hyper-x的冲突问题

          我 的电脑是神舟战神k650c i7 D4,处理器是Intel core i7 4710-MQ,系统是win 10的

    用户1539362
  • 《一本书读懂24种互联网思维》 摘抄

    虽然书中很多内容,在IT 老司机来看都是老生常谈,但对于我们每个有互联网思维的小伙伴来说还是常读常新的。

    用户1539362
  • Mac OS X 背后的故事(下)

    Mac OS X 背后的故事(九)半导体的丰收 半导体的丰收(上)   在美国宾夕法尼亚州的东部,有一个风景秀美的城市叫费城。在这个城市诞生了一系列改变世界的奇...

    康怀帅
  • 使用Kubernetes和Ambassador API Gateway部署Java应用程序

    在本文中,您将学习如何将三个简单的Java服务部署到Kubernetes(通过新的Docker for Mac / Windows集成在本地运行),并通过Kub...

    February
  • Spring+MYBatis企业应用实战.pdf

    《Spring+MyBatis企业应用实战》介绍了Java EE 领域的两个开源框架:Spring 的MVC 和MyBatis。其中Spring 的版本为4.2...

    用户3157710
  • 熟练运用PPT母板 ,让你的工作效率成倍提高

    用户1756920
  • Django rest-framework的jwt认证

    总共分为4部,只有在用户重新登录时才会再次签发新的token,如果原token没有超过过期时间,也是有效的,并且会在每个需要登录的接口中客户端会携带token与...

    GH
  • Github点赞接近100k的SpringBoot学习教程+实战推荐!牛批!

    很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Boot 进行开发,毕竟它这么好用以及天然微服务友好。不夸张的说,Spri...

    Guide哥
  • 【作业4.0】HansBug的第四次面向对象课程思考

    HansBug

扫码关注云+社区

领取腾讯云代金券