下面的代码,不使用MFC得CBitmap  CDC 怎么做?BITMAPFILEHEADER bfh;
memset( &bfh, 0, sizeof( bfh ) );
bfh.bfType = 'MB';
bfh.bfSize = sizeof( bfh ) + BufferSize + sizeof( BITMAPINFOHEADER );
bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );DWORD Written = 0;
WriteFile( hf, &bfh, sizeof( bfh ), &Written, NULL );BITMAPINFOHEADER bih;
memset( &bih, 0, sizeof( bih ) );
bih.biSize = sizeof( bih );
bih.biWidth = Width;
bih.biHeight = Height;
bih.biPlanes = 1;
bih.biBitCount = 24;CBitmap *m_pMemBmp = NULL;
CBitmap *m_pOldBmp = NULL;
CDC *m_pMemDC = new CDC();
CDC *pDC = GetDC();m_pMemDC->CreateCompatibleDC(pDC);m_pMemBmp = new CBitmap(); 
m_pMemBmp->CreateCompatibleBitmap(pDC, bih.biWidth+10, bih.biHeight+10);
ReleaseDC(pDC);
m_pOldBmp = m_pMemDC->SelectObject(m_pMemBmp);
m_pMemDC->FillSolidRect(0, 0, bih.biWidth+10, bih.biHeight+10, RGB(255, 255, 255));SetDIBits(m_pMemDC->GetSafeHdc(), (HBITMAP)m_pMemBmp->m_hObject, 
0, bih.biHeight, (LPVOID)pBuffer, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
CString strOut = "";
strOut.Format("%d", iNum);HFONT   hf1;   
LOGFONT   lf;   strcpy( lf.lfFaceName, "Arial" );
lf.lfOrientation=0;   
lf.lfItalic=FALSE;   
lf.lfWeight=FW_NORMAL;   
lf.lfStrikeOut=FALSE;   
lf.lfQuality=DRAFT_QUALITY;   
lf.lfUnderline=FALSE;   
lf.lfEscapement=0;  
lf.lfWidth = 20;  
lf.lfHeight = 20;  
lf.lfEscapement=0;   
hf1=CreateFontIndirect(&lf);  
m_pMemDC->SelectObject(hf1);//*/ 
m_pMemDC->SetBkMode(TRANSPARENT);
m_pMemDC->SetTextColor(0x00FF00 );
m_pMemDC->TextOut(10, 10, strOut);int nCount = GetDIBits(m_pMemDC->GetSafeHdc(), 
(HBITMAP)m_pMemBmp->m_hObject, 0, bih.biHeight, 
(LPVOID)pTemp, (BITMAPINFO*)&bih, DIB_RGB_COLORS);

解决方案 »

  1.   

    改用对应的API函数就行了,你检查一下各函数的参数和HBITMAP、HDC对应起来。
      

  2.   

    我改了,但有问题,帮我看看什么地方有问题
    谢谢
    BITMAPFILEHEADER bfh;
    memset( &bfh, 0, sizeof( bfh ) );
    bfh.bfType = 'MB';
    bfh.bfSize = sizeof( bfh ) + BufferSize + sizeof( BITMAPINFOHEADER );
    bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );
    BITMAPINFOHEADER bih;
    memset( &bih, 0, sizeof( bih ) );
    bih.biSize = sizeof( bih );
    bih.biWidth = Width;
    bih.biHeight = Height;
    bih.biPlanes = 1;
    bih.biBitCount = 24;HDC hdcSrc = CreateCompatibleDC(NULL);HDC hdcDst = CreateCompatibleDC(NULL);HBITMAP hBitMap = NULL;
    hBitMap =  CreateCompatibleBitmap( hdcDst, bih.biWidth, bih.biHeight );SelectObject( hdcDst, hBitMap);int isr = SetDIBits(hdcDst, hBitMap, 
    0, bih.biHeight, (LPVOID)pBuffer, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
    RECT rcTmp;
    SetRect(&rcTmp, 0, 0, bih.biWidth, bih.biHeight); DrawText(hdcDst, "1", 1, &rcTmp, DT_TOP);int nCount = GetDIBits(hdcDst, 
    hBitMap, 0, bih.biHeight, 
    (LPVOID)pTemp, (BITMAPINFO*)&bih, DIB_RGB_COLORS);