h_DC 也是当前的dc      
h_DC上用loadimage读入一个24位的位图
         CDC curDC;
curDC.Attach(h_DC);
CBitmap bmp;
CDC pDC;
pDC.CreateCompatibleDC(NULL);
bmp.CreateCompatibleBitmap(&curDC,200,200);//创建一个与tempDC相容的内存位图
pDC.SelectObject(&bmp);
pDC.BitBlt(0,0,200,200,&curDC,200,200,SRCCOPY);

BITMAP bm;
PBITMAPINFO bmpInf;
BOOL bRet=FALSE;
int nPaletteSize=0;

if(bmp.GetObject(sizeof(bm),&bm)==0)
{
return ;
}
问题在这里//我打开的明明是24bit的位图,bm得到的为什么是16bit的位图信息
难道windows自动给转了?????

解决方案 »

  1.   

    BOOL CtestsdiView::OnEraseBkgnd(CDC* pDC)
    {
    HBITMAP bitmap;
    bitmap = (HBITMAP)LoadImage(NULL,"e:\\11.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
        CDC memDC;
    memDC.CreateCompatibleDC(pDC);
    CBitmap m_bit;
    m_bit.Attach(bitmap);
    memDC.SelectObject(&m_bit);
    BITMAP bm;
    m_bit.GetBitmap(&bm);
    CRect rect;
    pDC->GetClipBox(rect);
        pDC->BitBlt(rect.left , rect.top , rect.right - rect.left ,  rect.bottom -  rect.top, &memDC, rect.left, rect.top, SRCCOPY);
    return TRUE;

    }