美文网首页
VC中添加背景图片

VC中添加背景图片

作者: Drlilian | 来源:发表于2019-06-17 10:30 被阅读0次

    2009-12-02 

    1新建一个基于对话框的MFC工程。在resource view选项卡中bitmap中加入需要的背景图片。为IDB_BITMAP1.

    2 在oninitdialog函数中添加:

    BOOL CSteinbergDlg::OnInitDialog()

    {

    CDialog::OnInitDialog();

    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);

    .................................

    ..............................

    SetIcon(m_hIcon, TRUE);   // Set big icon

    SetIcon(m_hIcon, FALSE);  // Set small icon

    // TODO: Add extra initialization here

    CBitmap m_back;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    m_back.LoadBitmap(IDB_BLUE);  //背景图片添加1,一共有三处。//////////////////////////////////////////

    .....................

      return TRUE; 

    }

    3 添加消息响应函数OnCtlColor 和 OnEraseBkgnd.如果在Class vizard 中找不到WM_ERASEBKGND,在Class info选项卡中message filter中选择window 即可。

    HBRUSH CSteinbergDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 

    {

    pDC->SetBkMode(TRANSPARENT);   //设置透明背景模式2///////////////////////////////////////////////////////////////

    return (HBRUSH)::GetStockObject(HOLLOW_BRUSH);//设置背景刷子为空2///////////////////////////////////////

    }

    BOOL CSteinbergDlg::OnEraseBkgnd(CDC* pDC)   //更改背景3,windows 在发出WM_PAINT消息前发WM_ERASEBKGND擦除背景。

    {

    CBitmap m_back,*pOldBitmap;/////////////////////////////////////////////////////

    BITMAP bm;/////////////////////////////////////////////////////////////////////////////////////

    m_back.LoadBitmap(IDB_BLUE);//////////////////////////////////////////////////////

    CDC dc;/////////////////////////////////////////////////////////////////////////////////////////////////

    dc.CreateCompatibleDC(pDC);////////////////////////////////////////////////////////////

    pOldBitmap=(CBitmap *)dc.SelectObject(&m_back);///////////////////////////////////////

    m_back.GetBitmap(&bm);///////////////////////////////////////////////////////////////////////////////////

    CRect rt;/////////////////////////////////////////////////////////////////////

    GetClientRect(&rt);////////////////////////

    pDC->StretchBlt(0,0,rt.Width(),rt.Height(),&dc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);///////////////////

    return CDialog::OnEraseBkgnd(pDC);////////////////////////////////////

    }

    OK了

    但是它与皮肤添加是不可兼得的。anyway,whatever you like ,just do it.

    相关文章

      网友评论

          本文标题:VC中添加背景图片

          本文链接:https://www.haomeiwen.com/subject/jbczxctx.html