我想在按下按钮后在对话框上画幅位图,在按钮的OnClick事件中使用如下代码:
CPaintDC dc(this);
CBitmap Bmap;
b.LoadBitmap(IDB_BAMP);
dc.SelectObject(&Bmap);
dc.BitBlt(0,0,20,20,&dc,0,0,SRCCOPY);
但是并没有显示位图,请问为什么?
谢谢!

解决方案 »

  1.   

    // 在窗体中绘制位图
    void  DRAW_WINDOW_BITMAP( HWND &hWnd, CString strPathName )
    {
    CBitmap * m_pBmp = NULL;
    BITMAP bm;
    CDC dcMem;
    CDC * pDC = NULL; if ( IsFileExist( strPathName ) == FALSE )
    {
    // 需绘制的位图文件不存在,直接退出
    PrintMessage( _T("需绘制的位图文件不存在\n") );
    return;
    } pDC = new CDC;
    HDC hDc = ::GetDC( hWnd );
    pDC = CDC::FromHandle( hDc );

    // 装载图片
    HBITMAP  hBitmap = (HBITMAP)::LoadImage ( AfxGetInstanceHandle(), strPathName, \
    IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE | \
    LR_DEFAULTSIZE ); ASSERT( hBitmap );
    m_pBmp = new CBitmap();
    m_pBmp->Attach( hBitmap ); m_pBmp->GetObject( sizeof(bm), (LPVOID)&bm);
    dcMem.CreateCompatibleDC(pDC);
    CBitmap * pBmpOld = (CBitmap *)dcMem.SelectObject( m_pBmp );
    CRect rect;
    ::GetWindowRect( hWnd, rect ); // 将位图文件缩放绘制窗体中
    pDC->StretchBlt( 0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bm.bmWidth, \
    bm.bmHeight, SRCCOPY ); dcMem.SelectObject (pBmpOld ); pDC = NULL;
    delete pDC;

    delete m_pBmp;
    m_pBmp = NULL;
    }