我做了2个对话框,1个上面有好几个按钮,按不同的按钮在第2个对话框上显示不同的图片,我是在第2个对话框的OPAINT里画的图片.但我现在显示的时候我点击按钮几次后以前的图片都没有消除,每次按按钮都会先把以前显示的图片闪一遍然后才显示出要显示的图片,这是什么原因呢?

解决方案 »

  1.   

    有指针没有delete和置NULL?
    有Object没有DeleteObject?
      

  2.   

    我是在ONPAINT里加了
    if(e==1)         {
    CBitmap m_bmp;
    CDC mem;   
    mem.CreateCompatibleDC(&dc);    
    m_bmp.LoadBitmap(IDB_BITMAP59);   //背面   
    m_bmp.GetBitmap(&bm);
    CBitmap* pOld=(CBitmap*)mem.SelectObject(&m_bmp);
    dc.StretchBlt(20,47,225,408,&mem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

    }
    然后在另一个对话框里的BUTTON里加的
    dlg.e=1;
    dlg.Create(IDD_DIALOG1,this);
      

  3.   

    LoadBitmap 放到OnInitDialog中去,载入位图的过程全放进去,用的地方显示就行了
      

  4.   

    void CYourDlg::OnPaint()
    {
    CPaintDC dc(this);
    CBitmap bmp;
    Bitmap bm;
    switch(e)
    {
    case 1: bmp.LoadBitmap(IDB_BITMAP59);    break;
    case 2: bmp.LoadBitmap(IDB_BITMAP60);    break
    //....
    }
    CDC mem;   
    mem.CreateCompatibleDC(&dc);
    m_bmp.GetBitmap(&bm);
    CBitmap* pOld=(CBitmap*)mem.SelectObject(&m_bmp);
    dc.StretchBlt(20,47,225,408,&mem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
    mem.SelectObject(pOld);
    }如果不要求在第2个对话框不退出的情况下换图片,则将CBitmap m_bmp变成全局,把 switch(e)
    {
    case 1: bmp.LoadBitmap(IDB_BITMAP59);    break;
    case 2: bmp.LoadBitmap(IDB_BITMAP60);    break
    //....
    }
    放进OnInitDialog
      

  5.   

    我放入ONPAIT后怎么显示不了图片了~~~