请问我想在对话框中设其背景为一张图片.怎么办呀?

解决方案 »

  1.   

    在合适的地方加入以下代码就可以了,IDB_BKBMP1为你想加入的图片,要先在资源那里import
    其实加入背景处理起来比较麻烦,因为你要使控件和背景融为一体,我用的是skin觉得还好一点
                      CPaintDC dc(this);
    CRect rect;
    GetClientRect(&rect);
    CDC dcMem; 
    dcMem.CreateCompatibleDC(&dc); 
            CBitmap bmpBackground;
            bmpBackground.LoadBitmap(IDB_BKBMP1);
    BITMAP bitMap;
    bmpBackground.GetBitmap(&bitMap);
    CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
    dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
    dc.SelectObject(pbmpOld);
    bmpBackground.DeleteObject();
      

  2.   

    我觉得加入图片并不难
    // member variables
    BITMAP  m_bmif;
    HBITMAP m_hBitmap;
    CBrush  m_brBk;// OnInitDialog:
    m_hBitmap = (HBITMAP) LoadImage(AfxGetInstanceHandle(),
    strPicPath, // 图片绝对路径,如D:\picture\test.bmp
    IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);ZeroMemory(&m_bmif,sizeof(BITMAP));
    ::GetObject(m_hBitmap, sizeof(BITMAP), &m_bmif) ;
    m_brBk.CreatePatternBrush(CBitmap::FromHandle(m_hBitmap));
    CenterWindow(); // 将对话框放到屏幕中央
    GetClientRect(&rect); // 取对话框的区域
    rect.right = rect.left + m_bmif.bmWidth;// 使得对话框和背景图片一样大
    rect.bottom = rect.top + m_bmif.bmHeight;// 使得对话框和背景图片一样大
    MoveWindow(&rect); // 使得对话框和背景图片一样大
    // end Init Dialog重载OnCtlColor函数,直接返回m_brBk;:return m_brBK;
    重载PostNcDestroy函数,释放资源:
      m_brBk.DeleteObject();::DeleteObject(m_hBitmap);