以下的程序想实现的是将目录下的11张图片先全部缩画到后备dc上,
然后将后备dc画到屏幕上,现在程序的问题是如果我直接画到屏幕上就没事
通过后备来画怎么都不行
各位帮忙
    pDC = GetDC();
    m_DC.CreateCompatibleDC(pDC);
    TemDC.CreateCompatibleDC(pDC);
    for (int i=1; i<=11; i++)
    {
        strcpy(szFileName, "C:\\Program Files\\okTTemp1\\");
        char    aa[64];
        _itoa(i,aa,10);
        strcat(aa,".bmp");
        strcat(szFileName,aa);
        hBitmap= (HBITMAP)LoadImage(NULL, szFileName, IMAGE_BITMAP, 0, 0,LR_LOADFROMFILE);
        TemDC.SelectObject(hBitmap);
        StretchBlt(m_DC.m_hDC,i%10*103,(i/10)*100, 100, 96, TemDC.m_hDC, 0,0,768,576,SRCCOPY);
   }
    pDC->BitBlt(0,0,1024,576,&m_DC,0,0,SRCCOPY);
    ReleaseDC(pDC);

解决方案 »

  1.   

    兄弟,你的好多东西都没有释放噢,m_DC.CreateCompatibleDC(pDC);不能多次调用
    LoadImage 需要DeleteObject
    一般SelectObject()后因该恢复原来的对象到设备中TemDC.SelectObject()的参数是 CBitmap* 不是HBITMAP
    还有看看你的位图是否load成功了
      

  2.   

    pDC = GetDC();
        m_DC.CreateCompatibleDC(pDC);
        //must select a bitmap in m_DC...
        CBitmap Bitmap1,Bitmap2;
        //自己指定宽、高
        Bitmap1.CreateCompatibleBitmap(pDC,1024,576);
        CBitmap* pOldBitmap = (CBitmap *)m_DC.SelectObject(&Bitmap1);    TemDC.CreateCompatibleDC(pDC);
        for (int i=1; i<=11; i++)
        {
            strcpy(szFileName, "C:\\Program Files\\okTTemp1\\");
            char    aa[64];
            _itoa(i,aa,10);
            strcat(aa,".bmp");
            strcat(szFileName,aa);
            hBitmap= (HBITMAP)LoadImage(NULL, szFileName, IMAGE_BITMAP, 0, 0,LR_LOADFROMFILE);
            //Attach to cbitmap 
            Bitmap2.Attach(hBitmap);
            
            CBitmap *pOld = (CBitmap *)TemDC.SelectObject(&Bitmap2);
            StretchBlt(m_DC.m_hDC,i%10*103,(i/10)*100, 100, 96, TemDC.m_hDC, 0,0,768,576,SRCCOPY);
            //释放
            TemDC.SelectObject(pOld);
            Bitmap2.Detach();
            DeleteObject(hBitmap);
       }
        pDC->BitBlt(0,0,1024,576,&m_DC,0,0,SRCCOPY);
        m_DC.SelectObject(pOldBitmap);
        ReleaseDC(pDC);
      

  3.   

    楼上说得非常好!
    //must select a bitmap in m_DC...
    very good!
    我也学到了!谢谢!