我在对话框中设置位图作为背景图片,刚开始运行时一切良好。
但是我用鼠标拖动窗口后,一些按钮就不显示了,感觉像是背景图片覆盖了一样。
当鼠标指向按钮时,按钮才会显示,请问怎么回事,应该怎么处理才不会有这样的情况出现?PS:
不是用picture控件显示背景的!以下为设置背景的源代码,放在OnPaint中的;         CRect rect;
GetClientRect(&rect);
CDC* pDC = GetDC();
CBitmap cbitmap;
cbitmap.LoadBitmap(IDB_BITMAP1);
CDC memdc;
BITMAP bmp;
memdc.CreateCompatibleDC(pDC);
memdc.SelectObject(&cbitmap);
cbitmap.GetBitmap(&bmp);
pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memdc,0,0,
bmp.bmWidth,bmp.bmHeight,SRCCOPY);

解决方案 »

  1.   

    放到OnEraseBkgrnd中,不要放到OnPaint
      

  2.   

    在OnPaint里应该用CPaintDC并且用this指针初始化
    CPaintDC dc(this);
      

  3.   

    试试看: //   CDC* pDC = GetDC();    //注释掉   memdc.CreateCompatibleDC(pDC);改成memdc.CreateCompatibleDC(&dc);
    最后一句改成:
     dc.StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memdc,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
      

  4.   


    虽然你没说具体怎么做,但我自己查了,的确是这样,分给你了;已经完美搞定!!!!!!!
    我把代码贴出来,结贴!!!!!!!!!!!!!        CPaintDC dc(this);
    CBitmap cbitmap;
    CDC memdc;
    cbitmap.LoadBitmap(IDB_BITMAP1);
    memdc.CreateCompatibleDC(&dc);
    memdc.SelectObject(cbitmap);//一定要要,不然重画时会出错!
    dc.BitBlt(0,0,360,320,&memdc,0,0,SRCCOPY);
    memdc.DeleteDC();