现有一个MDI 程序, 它的主窗口没有cview类  想插入一个图片作为背景,在CMAINFRM类中实现 最好能插入jpg图

解决方案 »

  1.   

    网上有Cimage和cximage库,使用VC开发的,后者从前者派生,自己搜一下或直接到codeproject下载
      

  2.   

    用IPiture控件,然后用CXImage等库
      

  3.   

    主要问题不是怎么显示图片 而是由于没有视图类,该用哪个消息,我开始在CMainFrm里调用onpaint函数显示 但是图片只闪了一下就没了  控件当然加不上去~~
      

  4.   

    你可以用CDialogBar来创建一个MainFrame的自对话框,作为它的背景,然后再对话中铁图片,这样也可达到你的效果阿
      

  5.   

    子类化CMainFrame的m_m_hWndMDIClient成员为你的自定义窗口类,在这个自定义窗口类里绘制背景图形。
      

  6.   

    从CWnd派生一个类CBGColorWnd,然后分别处理WM_ERASEBKGND和WM_SIZE即可BOOL CBGColorWnd::OnEraseBkgnd(CDC* pDC) { CDC dcMem; dcMem.CreateCompatibleDC(pDC); CBitmap * m_pOldBitmap=dcMem.SelectObject(&m_bitmap);
     BITMAP bmp;//得到位图大小 m_bitmap.GetObject(sizeof(bmp),&bmp);
     CRect rect;//得到窗口大小 GetClientRect(&rect);
     pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);  dcMem.SelectObject(m_pOldBitmap); //还原
     return TRUE;}
    void CBGColorWnd::OnSize(UINT nType, int cx, int cy) { CWnd::OnSize(nType, cx, cy);  Invalidate(TRUE);}
    类做好之后,将BGColorWnd.h和BGColorWnd.cpp加入工程,在CMainFrame.h里
    #include "BGColorWnd.h",并添加变量 CBGColorWnd m_bgcolorwnd;
    最后在CMainFrame::OnCreate()里添加以下代码即可int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ //.............
     ASSERT(m_hWndMDIClient!=NULL); if (!m_bgcolorwnd.SubclassWindow(m_hWndMDIClient))  return -1;
     return 0;}
      

  7.   

    http://www.xiaozhou.net/ReadNews.asp?NewsID=834
      

  8.   

    还有点小问题,我要load的图片要可以换,就是说不能把它放在代码里,而是每次都从磁盘上读取一个图片。loadbitmap好像不能实现功能  望再帮帮忙!!
      

  9.   

    我开始在CMainFrm里调用onpaint函数显 控件当然加不上去~~
    =---------------加控件要在OnCreate() 里
      

  10.   

    to surstar(断水流)  我是说我的主界面加不进控件