zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    struct--file_operations
    接触到的一些数据结构: LIST_ENTRY, TAILQ
    Kernel Mode, User Mode
    可运行的代码
    写一篇Hook Driver.
    Chromium学习笔记
    Resources for Browser/Webkit/GPU
    Win7/8, convert dynamic disk volume to basic volume.
    System and Device power management.
    错误记录1----dom4j解析xml调试编码错误
  • 原文地址:https://www.cnblogs.com/wangyaning/p/7853990.html
Copyright © 2011-2022 走看看